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

Side by Side Diff: ui/base/ime/chromeos/character_composer_unittest.cc

Issue 117983002: Prefix string16 with base:: in ui/. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merge Created 7 years 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
« no previous file with comments | « ui/base/ime/chromeos/character_composer.cc ('k') | ui/base/ime/dummy_text_input_client.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "base/strings/utf_string_conversions.h" 7 #include "base/strings/utf_string_conversions.h"
8 #include "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
9 #include "third_party/gtk+/gdk/gdkkeysyms.h" 9 #include "third_party/gtk+/gdk/gdkkeysyms.h"
10 #include "ui/base/glib/glib_integers.h" 10 #include "ui/base/glib/glib_integers.h"
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 uint key, 53 uint key,
54 int flags) { 54 int flags) {
55 ExpectKeyFilteredWithKeycode(character_composer, key, 0, flags); 55 ExpectKeyFilteredWithKeycode(character_composer, key, 0, flags);
56 } 56 }
57 57
58 // Expects |expected_character| is composed after sequence [key1, key2]. 58 // Expects |expected_character| is composed after sequence [key1, key2].
59 void ExpectCharacterComposed(CharacterComposer* character_composer, 59 void ExpectCharacterComposed(CharacterComposer* character_composer,
60 uint key1, 60 uint key1,
61 uint key2, 61 uint key2,
62 int flags, 62 int flags,
63 const string16& expected_character) { 63 const base::string16& expected_character) {
64 ExpectKeyFiltered(character_composer, key1, flags); 64 ExpectKeyFiltered(character_composer, key1, flags);
65 EXPECT_TRUE(character_composer->FilterKeyPressInternal(key2, 0, flags)); 65 EXPECT_TRUE(character_composer->FilterKeyPressInternal(key2, 0, flags));
66 EXPECT_EQ(expected_character, character_composer->composed_character()); 66 EXPECT_EQ(expected_character, character_composer->composed_character());
67 } 67 }
68 68
69 // Expects |expected_character| is composed after sequence [key1, key2, key3]. 69 // Expects |expected_character| is composed after sequence [key1, key2, key3].
70 void ExpectCharacterComposed(CharacterComposer* character_composer, 70 void ExpectCharacterComposed(CharacterComposer* character_composer,
71 uint key1, 71 uint key1,
72 uint key2, 72 uint key2,
73 uint key3, 73 uint key3,
74 int flags, 74 int flags,
75 const string16& expected_character) { 75 const base::string16& expected_character) {
76 ExpectKeyFiltered(character_composer, key1, flags); 76 ExpectKeyFiltered(character_composer, key1, flags);
77 ExpectCharacterComposed(character_composer, key2, key3, flags, 77 ExpectCharacterComposed(character_composer, key2, key3, flags,
78 expected_character); 78 expected_character);
79 } 79 }
80 80
81 // Expects |expected_character| is composed after sequence [key1, key2, key3, 81 // Expects |expected_character| is composed after sequence [key1, key2, key3,
82 // key 4]. 82 // key 4].
83 void ExpectCharacterComposed(CharacterComposer* character_composer, 83 void ExpectCharacterComposed(CharacterComposer* character_composer,
84 uint key1, 84 uint key1,
85 uint key2, 85 uint key2,
86 uint key3, 86 uint key3,
87 uint key4, 87 uint key4,
88 int flags, 88 int flags,
89 const string16& expected_character) { 89 const base::string16& expected_character) {
90 ExpectKeyFiltered(character_composer, key1, flags); 90 ExpectKeyFiltered(character_composer, key1, flags);
91 ExpectCharacterComposed(character_composer, key2, key3, key4, flags, 91 ExpectCharacterComposed(character_composer, key2, key3, key4, flags,
92 expected_character); 92 expected_character);
93 } 93 }
94 94
95 // Expects |expected_character| is composed after sequence [key1, key2, key3, 95 // Expects |expected_character| is composed after sequence [key1, key2, key3,
96 // key 4, key5]. 96 // key 4, key5].
97 void ExpectCharacterComposed(CharacterComposer* character_composer, 97 void ExpectCharacterComposed(CharacterComposer* character_composer,
98 uint key1, 98 uint key1,
99 uint key2, 99 uint key2,
100 uint key3, 100 uint key3,
101 uint key4, 101 uint key4,
102 uint key5, 102 uint key5,
103 int flags, 103 int flags,
104 const string16& expected_character) { 104 const base::string16& expected_character) {
105 ExpectKeyFiltered(character_composer, key1, flags); 105 ExpectKeyFiltered(character_composer, key1, flags);
106 ExpectCharacterComposed(character_composer, key2, key3, key4, key5, flags, 106 ExpectCharacterComposed(character_composer, key2, key3, key4, key5, flags,
107 expected_character); 107 expected_character);
108 } 108 }
109 109
110 // Expects |expected_character| is composed after sequence [key1, key2, key3, 110 // Expects |expected_character| is composed after sequence [key1, key2, key3,
111 // key 4, key5, key6]. 111 // key 4, key5, key6].
112 void ExpectCharacterComposed(CharacterComposer* character_composer, 112 void ExpectCharacterComposed(CharacterComposer* character_composer,
113 uint key1, 113 uint key1,
114 uint key2, 114 uint key2,
115 uint key3, 115 uint key3,
116 uint key4, 116 uint key4,
117 uint key5, 117 uint key5,
118 uint key6, 118 uint key6,
119 int flags, 119 int flags,
120 const string16& expected_character) { 120 const base::string16& expected_character) {
121 ExpectKeyFiltered(character_composer, key1, flags); 121 ExpectKeyFiltered(character_composer, key1, flags);
122 ExpectCharacterComposed(character_composer, key2, key3, key4, key5, key6, 122 ExpectCharacterComposed(character_composer, key2, key3, key4, key5, key6,
123 flags, expected_character); 123 flags, expected_character);
124 } 124 }
125 125
126 // Expects |expected_character| is composed after sequence [{key1, keycode1}]. 126 // Expects |expected_character| is composed after sequence [{key1, keycode1}].
127 void ExpectCharacterComposedWithKeyCode(CharacterComposer* character_composer, 127 void ExpectCharacterComposedWithKeyCode(
128 uint key1, uint keycode1, 128 CharacterComposer* character_composer,
129 int flags, 129 uint key1, uint keycode1,
130 const string16& expected_character) { 130 int flags,
131 const base::string16& expected_character) {
131 EXPECT_TRUE(character_composer->FilterKeyPressInternal(key1, keycode1, 132 EXPECT_TRUE(character_composer->FilterKeyPressInternal(key1, keycode1,
132 flags)); 133 flags));
133 EXPECT_EQ(expected_character, character_composer->composed_character()); 134 EXPECT_EQ(expected_character, character_composer->composed_character());
134 } 135 }
135 }; 136 };
136 137
137 TEST_F(CharacterComposerTest, InitialState) { 138 TEST_F(CharacterComposerTest, InitialState) {
138 CharacterComposer character_composer; 139 CharacterComposer character_composer;
139 EXPECT_TRUE(character_composer.composed_character().empty()); 140 EXPECT_TRUE(character_composer.composed_character().empty());
140 } 141 }
(...skipping 19 matching lines...) Expand all
160 // Composition with sequence ['dead acute', 'dead circumflex', '1'] will fail. 161 // Composition with sequence ['dead acute', 'dead circumflex', '1'] will fail.
161 ExpectKeyFiltered(&character_composer, GDK_KEY_dead_acute, 0); 162 ExpectKeyFiltered(&character_composer, GDK_KEY_dead_acute, 0);
162 ExpectKeyFiltered(&character_composer, GDK_KEY_dead_circumflex, 0); 163 ExpectKeyFiltered(&character_composer, GDK_KEY_dead_circumflex, 0);
163 ExpectKeyFiltered(&character_composer, GDK_KEY_1, 0); 164 ExpectKeyFiltered(&character_composer, GDK_KEY_1, 0);
164 } 165 }
165 166
166 TEST_F(CharacterComposerTest, FullyMatchingSequences) { 167 TEST_F(CharacterComposerTest, FullyMatchingSequences) {
167 CharacterComposer character_composer; 168 CharacterComposer character_composer;
168 // LATIN SMALL LETTER A WITH ACUTE 169 // LATIN SMALL LETTER A WITH ACUTE
169 ExpectCharacterComposed(&character_composer, GDK_KEY_dead_acute, GDK_KEY_a, 0, 170 ExpectCharacterComposed(&character_composer, GDK_KEY_dead_acute, GDK_KEY_a, 0,
170 string16(1, 0x00E1)); 171 base::string16(1, 0x00E1));
171 // LATIN CAPITAL LETTER A WITH ACUTE 172 // LATIN CAPITAL LETTER A WITH ACUTE
172 ExpectCharacterComposed(&character_composer, GDK_KEY_dead_acute, GDK_KEY_A, 0, 173 ExpectCharacterComposed(&character_composer, GDK_KEY_dead_acute, GDK_KEY_A, 0,
173 string16(1, 0x00C1)); 174 base::string16(1, 0x00C1));
174 // GRAVE ACCENT 175 // GRAVE ACCENT
175 ExpectCharacterComposed(&character_composer, GDK_KEY_dead_grave, 176 ExpectCharacterComposed(&character_composer, GDK_KEY_dead_grave,
176 GDK_KEY_dead_grave, 0, string16(1, 0x0060)); 177 GDK_KEY_dead_grave, 0, base::string16(1, 0x0060));
177 // LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE 178 // LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
178 ExpectCharacterComposed(&character_composer, GDK_KEY_dead_acute, 179 ExpectCharacterComposed(&character_composer, GDK_KEY_dead_acute,
179 GDK_KEY_dead_circumflex, GDK_KEY_a, 0, 180 GDK_KEY_dead_circumflex, GDK_KEY_a, 0,
180 string16(1, 0x1EA5)); 181 base::string16(1, 0x1EA5));
181 // LATIN CAPITAL LETTER U WITH HORN AND GRAVE 182 // LATIN CAPITAL LETTER U WITH HORN AND GRAVE
182 ExpectCharacterComposed(&character_composer, GDK_KEY_dead_grave, 183 ExpectCharacterComposed(&character_composer, GDK_KEY_dead_grave,
183 GDK_KEY_dead_horn, GDK_KEY_U, 0, string16(1, 0x1EEA)); 184 GDK_KEY_dead_horn, GDK_KEY_U, 0,
185 base::string16(1, 0x1EEA));
184 // LATIN CAPITAL LETTER C WITH CEDILLA 186 // LATIN CAPITAL LETTER C WITH CEDILLA
185 ExpectCharacterComposed(&character_composer, GDK_KEY_dead_acute, GDK_KEY_C, 0, 187 ExpectCharacterComposed(&character_composer, GDK_KEY_dead_acute, GDK_KEY_C, 0,
186 string16(1, 0x00C7)); 188 base::string16(1, 0x00C7));
187 // LATIN SMALL LETTER C WITH CEDILLA 189 // LATIN SMALL LETTER C WITH CEDILLA
188 ExpectCharacterComposed(&character_composer, GDK_KEY_dead_acute, GDK_KEY_c, 0, 190 ExpectCharacterComposed(&character_composer, GDK_KEY_dead_acute, GDK_KEY_c, 0,
189 string16(1, 0x00E7)); 191 base::string16(1, 0x00E7));
190 } 192 }
191 193
192 TEST_F(CharacterComposerTest, FullyMatchingSequencesAfterMatchingFailure) { 194 TEST_F(CharacterComposerTest, FullyMatchingSequencesAfterMatchingFailure) {
193 CharacterComposer character_composer; 195 CharacterComposer character_composer;
194 // Composition with sequence ['dead acute', 'dead circumflex', '1'] will fail. 196 // Composition with sequence ['dead acute', 'dead circumflex', '1'] will fail.
195 ExpectKeyFiltered(&character_composer, GDK_KEY_dead_acute, 0); 197 ExpectKeyFiltered(&character_composer, GDK_KEY_dead_acute, 0);
196 ExpectKeyFiltered(&character_composer, GDK_KEY_dead_circumflex, 0); 198 ExpectKeyFiltered(&character_composer, GDK_KEY_dead_circumflex, 0);
197 ExpectKeyFiltered(&character_composer, GDK_KEY_1, 0); 199 ExpectKeyFiltered(&character_composer, GDK_KEY_1, 0);
198 // LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE 200 // LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
199 ExpectCharacterComposed(&character_composer, GDK_KEY_dead_acute, 201 ExpectCharacterComposed(&character_composer, GDK_KEY_dead_acute,
200 GDK_KEY_dead_circumflex, GDK_KEY_a, 0, 202 GDK_KEY_dead_circumflex, GDK_KEY_a, 0,
201 string16(1, 0x1EA5)); 203 base::string16(1, 0x1EA5));
202 } 204 }
203 205
204 TEST_F(CharacterComposerTest, ComposedCharacterIsClearedAfterReset) { 206 TEST_F(CharacterComposerTest, ComposedCharacterIsClearedAfterReset) {
205 CharacterComposer character_composer; 207 CharacterComposer character_composer;
206 ExpectCharacterComposed(&character_composer, GDK_KEY_dead_acute, GDK_KEY_a, 0, 208 ExpectCharacterComposed(&character_composer, GDK_KEY_dead_acute, GDK_KEY_a, 0,
207 string16(1, 0x00E1)); 209 base::string16(1, 0x00E1));
208 character_composer.Reset(); 210 character_composer.Reset();
209 EXPECT_TRUE(character_composer.composed_character().empty()); 211 EXPECT_TRUE(character_composer.composed_character().empty());
210 } 212 }
211 213
212 TEST_F(CharacterComposerTest, CompositionStateIsClearedAfterReset) { 214 TEST_F(CharacterComposerTest, CompositionStateIsClearedAfterReset) {
213 CharacterComposer character_composer; 215 CharacterComposer character_composer;
214 // Even though sequence ['dead acute', 'a'] will compose 'a with acute', 216 // Even though sequence ['dead acute', 'a'] will compose 'a with acute',
215 // no character is composed here because of reset. 217 // no character is composed here because of reset.
216 ExpectKeyFiltered(&character_composer, GDK_KEY_dead_acute, 0); 218 ExpectKeyFiltered(&character_composer, GDK_KEY_dead_acute, 0);
217 character_composer.Reset(); 219 character_composer.Reset();
218 ExpectKeyNotFiltered(&character_composer, GDK_KEY_a, 0); 220 ExpectKeyNotFiltered(&character_composer, GDK_KEY_a, 0);
219 } 221 }
220 222
221 TEST_F(CharacterComposerTest, KeySequenceCompositionPreedit) { 223 TEST_F(CharacterComposerTest, KeySequenceCompositionPreedit) {
222 CharacterComposer character_composer; 224 CharacterComposer character_composer;
223 // LATIN SMALL LETTER A WITH ACUTE 225 // LATIN SMALL LETTER A WITH ACUTE
224 // preedit_string() is always empty in key sequence composition mode. 226 // preedit_string() is always empty in key sequence composition mode.
225 ExpectKeyFiltered(&character_composer, GDK_KEY_dead_acute, 0); 227 ExpectKeyFiltered(&character_composer, GDK_KEY_dead_acute, 0);
226 EXPECT_TRUE(character_composer.preedit_string().empty()); 228 EXPECT_TRUE(character_composer.preedit_string().empty());
227 EXPECT_TRUE(FilterKeyPress(&character_composer, GDK_KEY_a, 0, 0)); 229 EXPECT_TRUE(FilterKeyPress(&character_composer, GDK_KEY_a, 0, 0));
228 EXPECT_EQ(string16(1, 0x00E1), character_composer.composed_character()); 230 EXPECT_EQ(base::string16(1, 0x00E1), character_composer.composed_character());
229 EXPECT_TRUE(character_composer.preedit_string().empty()); 231 EXPECT_TRUE(character_composer.preedit_string().empty());
230 } 232 }
231 233
232 // ComposeCheckerWithCompactTable in character_composer.cc is depending on the 234 // ComposeCheckerWithCompactTable in character_composer.cc is depending on the
233 // assumption that the data in gtkimcontextsimpleseqs.h is correctly ordered. 235 // assumption that the data in gtkimcontextsimpleseqs.h is correctly ordered.
234 TEST_F(CharacterComposerTest, MainTableIsCorrectlyOrdered) { 236 TEST_F(CharacterComposerTest, MainTableIsCorrectlyOrdered) {
235 // This file is included here intentionally, instead of the top of the file, 237 // This file is included here intentionally, instead of the top of the file,
236 // because including this file at the top of the file will define a 238 // because including this file at the top of the file will define a
237 // global constant and contaminate the global namespace. 239 // global constant and contaminate the global namespace.
238 #include "third_party/gtk+/gtk/gtkimcontextsimpleseqs.h" 240 #include "third_party/gtk+/gtk/gtkimcontextsimpleseqs.h"
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 } 276 }
275 } 277 }
276 } 278 }
277 279
278 TEST_F(CharacterComposerTest, HexadecimalComposition) { 280 TEST_F(CharacterComposerTest, HexadecimalComposition) {
279 CharacterComposer character_composer; 281 CharacterComposer character_composer;
280 // HIRAGANA LETTER A (U+3042) 282 // HIRAGANA LETTER A (U+3042)
281 ExpectKeyFiltered(&character_composer, GDK_KEY_U, 283 ExpectKeyFiltered(&character_composer, GDK_KEY_U,
282 EF_SHIFT_DOWN | EF_CONTROL_DOWN); 284 EF_SHIFT_DOWN | EF_CONTROL_DOWN);
283 ExpectCharacterComposed(&character_composer, GDK_KEY_3, GDK_KEY_0, GDK_KEY_4, 285 ExpectCharacterComposed(&character_composer, GDK_KEY_3, GDK_KEY_0, GDK_KEY_4,
284 GDK_KEY_2, GDK_KEY_space, 0, string16(1, 0x3042)); 286 GDK_KEY_2, GDK_KEY_space, 0,
287 base::string16(1, 0x3042));
285 // MUSICAL KEYBOARD (U+1F3B9) 288 // MUSICAL KEYBOARD (U+1F3B9)
286 const char16 kMusicalKeyboard[] = {0xd83c, 0xdfb9}; 289 const char16 kMusicalKeyboard[] = {0xd83c, 0xdfb9};
287 ExpectKeyFiltered(&character_composer, GDK_KEY_U, 290 ExpectKeyFiltered(&character_composer, GDK_KEY_U,
288 EF_SHIFT_DOWN | EF_CONTROL_DOWN); 291 EF_SHIFT_DOWN | EF_CONTROL_DOWN);
289 ExpectCharacterComposed(&character_composer, GDK_KEY_1, GDK_KEY_f, GDK_KEY_3, 292 ExpectCharacterComposed(&character_composer, GDK_KEY_1, GDK_KEY_f, GDK_KEY_3,
290 GDK_KEY_b, GDK_KEY_9, GDK_KEY_Return, 0, 293 GDK_KEY_b, GDK_KEY_9, GDK_KEY_Return, 0,
291 string16(kMusicalKeyboard, 294 base::string16(kMusicalKeyboard,
292 kMusicalKeyboard + 295 kMusicalKeyboard +
293 arraysize(kMusicalKeyboard))); 296 arraysize(kMusicalKeyboard)));
294 } 297 }
295 298
296 TEST_F(CharacterComposerTest, HexadecimalCompositionPreedit) { 299 TEST_F(CharacterComposerTest, HexadecimalCompositionPreedit) {
297 CharacterComposer character_composer; 300 CharacterComposer character_composer;
298 // HIRAGANA LETTER A (U+3042) 301 // HIRAGANA LETTER A (U+3042)
299 ExpectKeyFiltered(&character_composer, GDK_KEY_U, 302 ExpectKeyFiltered(&character_composer, GDK_KEY_U,
300 EF_SHIFT_DOWN | EF_CONTROL_DOWN); 303 EF_SHIFT_DOWN | EF_CONTROL_DOWN);
301 EXPECT_EQ(ASCIIToUTF16("u"), character_composer.preedit_string()); 304 EXPECT_EQ(ASCIIToUTF16("u"), character_composer.preedit_string());
302 ExpectKeyFiltered(&character_composer, GDK_KEY_3, 0); 305 ExpectKeyFiltered(&character_composer, GDK_KEY_3, 0);
303 EXPECT_EQ(ASCIIToUTF16("u3"), character_composer.preedit_string()); 306 EXPECT_EQ(ASCIIToUTF16("u3"), character_composer.preedit_string());
304 ExpectKeyFiltered(&character_composer, GDK_KEY_0, 0); 307 ExpectKeyFiltered(&character_composer, GDK_KEY_0, 0);
305 EXPECT_EQ(ASCIIToUTF16("u30"), character_composer.preedit_string()); 308 EXPECT_EQ(ASCIIToUTF16("u30"), character_composer.preedit_string());
306 ExpectKeyFiltered(&character_composer, GDK_KEY_4, 0); 309 ExpectKeyFiltered(&character_composer, GDK_KEY_4, 0);
307 EXPECT_EQ(ASCIIToUTF16("u304"), character_composer.preedit_string()); 310 EXPECT_EQ(ASCIIToUTF16("u304"), character_composer.preedit_string());
308 ExpectKeyFiltered(&character_composer, GDK_KEY_a, 0); 311 ExpectKeyFiltered(&character_composer, GDK_KEY_a, 0);
309 EXPECT_EQ(ASCIIToUTF16("u304a"), character_composer.preedit_string()); 312 EXPECT_EQ(ASCIIToUTF16("u304a"), character_composer.preedit_string());
310 ExpectKeyFiltered(&character_composer, GDK_KEY_BackSpace, 0); 313 ExpectKeyFiltered(&character_composer, GDK_KEY_BackSpace, 0);
311 EXPECT_EQ(ASCIIToUTF16("u304"), character_composer.preedit_string()); 314 EXPECT_EQ(ASCIIToUTF16("u304"), character_composer.preedit_string());
312 ExpectCharacterComposed(&character_composer, GDK_KEY_2, GDK_KEY_Return, 0, 315 ExpectCharacterComposed(&character_composer, GDK_KEY_2, GDK_KEY_Return, 0,
313 string16(1, 0x3042)); 316 base::string16(1, 0x3042));
314 EXPECT_EQ(ASCIIToUTF16(""), character_composer.preedit_string()); 317 EXPECT_EQ(ASCIIToUTF16(""), character_composer.preedit_string());
315 318
316 // Sequence with an ignored character ('x') and Escape. 319 // Sequence with an ignored character ('x') and Escape.
317 ExpectKeyFiltered(&character_composer, GDK_KEY_U, 320 ExpectKeyFiltered(&character_composer, GDK_KEY_U,
318 EF_SHIFT_DOWN | EF_CONTROL_DOWN); 321 EF_SHIFT_DOWN | EF_CONTROL_DOWN);
319 EXPECT_EQ(ASCIIToUTF16("u"), character_composer.preedit_string()); 322 EXPECT_EQ(ASCIIToUTF16("u"), character_composer.preedit_string());
320 ExpectKeyFiltered(&character_composer, GDK_KEY_3, 0); 323 ExpectKeyFiltered(&character_composer, GDK_KEY_3, 0);
321 EXPECT_EQ(ASCIIToUTF16("u3"), character_composer.preedit_string()); 324 EXPECT_EQ(ASCIIToUTF16("u3"), character_composer.preedit_string());
322 ExpectKeyFiltered(&character_composer, GDK_KEY_0, 0); 325 ExpectKeyFiltered(&character_composer, GDK_KEY_0, 0);
323 EXPECT_EQ(ASCIIToUTF16("u30"), character_composer.preedit_string()); 326 EXPECT_EQ(ASCIIToUTF16("u30"), character_composer.preedit_string());
(...skipping 15 matching lines...) Expand all
339 EF_SHIFT_DOWN | EF_CONTROL_DOWN); 342 EF_SHIFT_DOWN | EF_CONTROL_DOWN);
340 ExpectKeyFiltered(&character_composer, GDK_KEY_x, 0); 343 ExpectKeyFiltered(&character_composer, GDK_KEY_x, 0);
341 ExpectKeyFiltered(&character_composer, GDK_KEY_space, 0); 344 ExpectKeyFiltered(&character_composer, GDK_KEY_space, 0);
342 EXPECT_TRUE(character_composer.composed_character().empty()); 345 EXPECT_TRUE(character_composer.composed_character().empty());
343 346
344 // HIRAGANA LETTER A (U+3042) with a sequence [3, 0, x, 4, 2]. 347 // HIRAGANA LETTER A (U+3042) with a sequence [3, 0, x, 4, 2].
345 ExpectKeyFiltered(&character_composer, GDK_KEY_U, 348 ExpectKeyFiltered(&character_composer, GDK_KEY_U,
346 EF_SHIFT_DOWN | EF_CONTROL_DOWN); 349 EF_SHIFT_DOWN | EF_CONTROL_DOWN);
347 ExpectCharacterComposed(&character_composer, GDK_KEY_3, GDK_KEY_0, GDK_KEY_x, 350 ExpectCharacterComposed(&character_composer, GDK_KEY_3, GDK_KEY_0, GDK_KEY_x,
348 GDK_KEY_4, GDK_KEY_2, GDK_KEY_space, 0, 351 GDK_KEY_4, GDK_KEY_2, GDK_KEY_space, 0,
349 string16(1, 0x3042)); 352 base::string16(1, 0x3042));
350 } 353 }
351 354
352 TEST_F(CharacterComposerTest, HexadecimalCompositionWithAdditionalModifiers) { 355 TEST_F(CharacterComposerTest, HexadecimalCompositionWithAdditionalModifiers) {
353 CharacterComposer character_composer; 356 CharacterComposer character_composer;
354 357
355 // Ctrl+Shift+Alt+U 358 // Ctrl+Shift+Alt+U
356 // HIRAGANA LETTER A (U+3042) 359 // HIRAGANA LETTER A (U+3042)
357 ExpectKeyFiltered(&character_composer, GDK_KEY_U, 360 ExpectKeyFiltered(&character_composer, GDK_KEY_U,
358 EF_SHIFT_DOWN | EF_CONTROL_DOWN | EF_ALT_DOWN); 361 EF_SHIFT_DOWN | EF_CONTROL_DOWN | EF_ALT_DOWN);
359 ExpectCharacterComposed(&character_composer, GDK_KEY_3, GDK_KEY_0, GDK_KEY_4, 362 ExpectCharacterComposed(&character_composer, GDK_KEY_3, GDK_KEY_0, GDK_KEY_4,
360 GDK_KEY_2, GDK_KEY_space, 0, string16(1, 0x3042)); 363 GDK_KEY_2, GDK_KEY_space, 0,
364 base::string16(1, 0x3042));
361 365
362 // Ctrl+Shift+u (CapsLock enabled) 366 // Ctrl+Shift+u (CapsLock enabled)
363 ExpectKeyNotFiltered(&character_composer, GDK_KEY_u, 367 ExpectKeyNotFiltered(&character_composer, GDK_KEY_u,
364 EF_SHIFT_DOWN | EF_CONTROL_DOWN | EF_CAPS_LOCK_DOWN); 368 EF_SHIFT_DOWN | EF_CONTROL_DOWN | EF_CAPS_LOCK_DOWN);
365 } 369 }
366 370
367 TEST_F(CharacterComposerTest, CancelHexadecimalComposition) { 371 TEST_F(CharacterComposerTest, CancelHexadecimalComposition) {
368 CharacterComposer character_composer; 372 CharacterComposer character_composer;
369 // Cancel composition with ESC. 373 // Cancel composition with ESC.
370 ExpectKeyFiltered(&character_composer, GDK_KEY_U, 374 ExpectKeyFiltered(&character_composer, GDK_KEY_U,
371 EF_SHIFT_DOWN | EF_CONTROL_DOWN); 375 EF_SHIFT_DOWN | EF_CONTROL_DOWN);
372 ExpectKeyFiltered(&character_composer, GDK_KEY_1, 0); 376 ExpectKeyFiltered(&character_composer, GDK_KEY_1, 0);
373 ExpectKeyFiltered(&character_composer, GDK_KEY_Escape, 0); 377 ExpectKeyFiltered(&character_composer, GDK_KEY_Escape, 0);
374 378
375 // Now we can start composition again since the last composition was 379 // Now we can start composition again since the last composition was
376 // cancelled. 380 // cancelled.
377 // HIRAGANA LETTER A (U+3042) 381 // HIRAGANA LETTER A (U+3042)
378 ExpectKeyFiltered(&character_composer, GDK_KEY_U, 382 ExpectKeyFiltered(&character_composer, GDK_KEY_U,
379 EF_SHIFT_DOWN | EF_CONTROL_DOWN); 383 EF_SHIFT_DOWN | EF_CONTROL_DOWN);
380 ExpectCharacterComposed(&character_composer, GDK_KEY_3, GDK_KEY_0, GDK_KEY_4, 384 ExpectCharacterComposed(&character_composer, GDK_KEY_3, GDK_KEY_0, GDK_KEY_4,
381 GDK_KEY_2, GDK_KEY_space, 0, string16(1, 0x3042)); 385 GDK_KEY_2, GDK_KEY_space, 0,
386 base::string16(1, 0x3042));
382 } 387 }
383 388
384 TEST_F(CharacterComposerTest, HexadecimalCompositionWithBackspace) { 389 TEST_F(CharacterComposerTest, HexadecimalCompositionWithBackspace) {
385 CharacterComposer character_composer; 390 CharacterComposer character_composer;
386 // HIRAGANA LETTER A (U+3042) 391 // HIRAGANA LETTER A (U+3042)
387 ExpectKeyFiltered(&character_composer, GDK_KEY_U, 392 ExpectKeyFiltered(&character_composer, GDK_KEY_U,
388 EF_SHIFT_DOWN | EF_CONTROL_DOWN); 393 EF_SHIFT_DOWN | EF_CONTROL_DOWN);
389 ExpectKeyFiltered(&character_composer, GDK_KEY_3, 0); 394 ExpectKeyFiltered(&character_composer, GDK_KEY_3, 0);
390 ExpectKeyFiltered(&character_composer, GDK_KEY_0, 0); 395 ExpectKeyFiltered(&character_composer, GDK_KEY_0, 0);
391 ExpectKeyFiltered(&character_composer, GDK_KEY_f, 0); 396 ExpectKeyFiltered(&character_composer, GDK_KEY_f, 0);
392 ExpectKeyFiltered(&character_composer, GDK_KEY_BackSpace, 0); 397 ExpectKeyFiltered(&character_composer, GDK_KEY_BackSpace, 0);
393 ExpectCharacterComposed(&character_composer, GDK_KEY_4, GDK_KEY_2, 398 ExpectCharacterComposed(&character_composer, GDK_KEY_4, GDK_KEY_2,
394 GDK_KEY_space, 0, string16(1, 0x3042)); 399 GDK_KEY_space, 0, base::string16(1, 0x3042));
395 } 400 }
396 401
397 TEST_F(CharacterComposerTest, CancelHexadecimalCompositionWithBackspace) { 402 TEST_F(CharacterComposerTest, CancelHexadecimalCompositionWithBackspace) {
398 CharacterComposer character_composer; 403 CharacterComposer character_composer;
399 404
400 // Backspace just after Ctrl+Shift+U. 405 // Backspace just after Ctrl+Shift+U.
401 ExpectKeyFiltered(&character_composer, GDK_KEY_U, 406 ExpectKeyFiltered(&character_composer, GDK_KEY_U,
402 EF_SHIFT_DOWN | EF_CONTROL_DOWN); 407 EF_SHIFT_DOWN | EF_CONTROL_DOWN);
403 ExpectKeyFiltered(&character_composer, GDK_KEY_BackSpace, 0); 408 ExpectKeyFiltered(&character_composer, GDK_KEY_BackSpace, 0);
404 ExpectKeyNotFiltered(&character_composer, GDK_KEY_3, 0); 409 ExpectKeyNotFiltered(&character_composer, GDK_KEY_3, 0);
(...skipping 30 matching lines...) Expand all
435 EXPECT_EQ(ASCIIToUTF16("u304a"), character_composer.preedit_string()); 440 EXPECT_EQ(ASCIIToUTF16("u304a"), character_composer.preedit_string());
436 ExpectKeyFilteredWithKeycode(&character_composer, 441 ExpectKeyFilteredWithKeycode(&character_composer,
437 GDK_KEY_BackSpace, 22, control_shift); 442 GDK_KEY_BackSpace, 22, control_shift);
438 EXPECT_EQ(ASCIIToUTF16("u304"), character_composer.preedit_string()); 443 EXPECT_EQ(ASCIIToUTF16("u304"), character_composer.preedit_string());
439 ExpectKeyFilteredWithKeycode(&character_composer, 444 ExpectKeyFilteredWithKeycode(&character_composer,
440 GDK_KEY_at, 11, control_shift); 445 GDK_KEY_at, 11, control_shift);
441 EXPECT_EQ(ASCIIToUTF16("u3042"), character_composer.preedit_string()); 446 EXPECT_EQ(ASCIIToUTF16("u3042"), character_composer.preedit_string());
442 ExpectCharacterComposedWithKeyCode(&character_composer, 447 ExpectCharacterComposedWithKeyCode(&character_composer,
443 GDK_KEY_Return, 36, 448 GDK_KEY_Return, 36,
444 control_shift, 449 control_shift,
445 string16(1, 0x3042)); 450 base::string16(1, 0x3042));
446 EXPECT_EQ(ASCIIToUTF16(""), character_composer.preedit_string()); 451 EXPECT_EQ(ASCIIToUTF16(""), character_composer.preedit_string());
447 452
448 // Sequence with an ignored character (control + shift + 'x') and Escape. 453 // Sequence with an ignored character (control + shift + 'x') and Escape.
449 ExpectKeyFilteredWithKeycode(&character_composer, 454 ExpectKeyFilteredWithKeycode(&character_composer,
450 GDK_KEY_U, 30, control_shift); 455 GDK_KEY_U, 30, control_shift);
451 EXPECT_EQ(ASCIIToUTF16("u"), character_composer.preedit_string()); 456 EXPECT_EQ(ASCIIToUTF16("u"), character_composer.preedit_string());
452 ExpectKeyFilteredWithKeycode(&character_composer, 457 ExpectKeyFilteredWithKeycode(&character_composer,
453 GDK_KEY_numbersign, 12, control_shift); 458 GDK_KEY_numbersign, 12, control_shift);
454 EXPECT_EQ(ASCIIToUTF16("u3"), character_composer.preedit_string()); 459 EXPECT_EQ(ASCIIToUTF16("u3"), character_composer.preedit_string());
455 ExpectKeyFilteredWithKeycode(&character_composer, 460 ExpectKeyFilteredWithKeycode(&character_composer,
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
502 ExpectKeyFiltered(&character_composer, GDK_KEY_1, 0); 507 ExpectKeyFiltered(&character_composer, GDK_KEY_1, 0);
503 for (int i = 0; i < 4; ++i) 508 for (int i = 0; i < 4; ++i)
504 ExpectKeyFiltered(&character_composer, GDK_KEY_0, 0); 509 ExpectKeyFiltered(&character_composer, GDK_KEY_0, 0);
505 ExpectKeyFiltered(&character_composer, GDK_KEY_space, 0); 510 ExpectKeyFiltered(&character_composer, GDK_KEY_space, 0);
506 } 511 }
507 512
508 TEST_F(CharacterComposerTest, HexadecimalSequenceAndDeadKey) { 513 TEST_F(CharacterComposerTest, HexadecimalSequenceAndDeadKey) {
509 CharacterComposer character_composer; 514 CharacterComposer character_composer;
510 // LATIN SMALL LETTER A WITH ACUTE 515 // LATIN SMALL LETTER A WITH ACUTE
511 ExpectCharacterComposed(&character_composer, GDK_KEY_dead_acute, GDK_KEY_a, 0, 516 ExpectCharacterComposed(&character_composer, GDK_KEY_dead_acute, GDK_KEY_a, 0,
512 string16(1, 0x00E1)); 517 base::string16(1, 0x00E1));
513 // HIRAGANA LETTER A (U+3042) with dead_acute ignored. 518 // HIRAGANA LETTER A (U+3042) with dead_acute ignored.
514 ExpectKeyFiltered(&character_composer, GDK_KEY_U, 519 ExpectKeyFiltered(&character_composer, GDK_KEY_U,
515 EF_SHIFT_DOWN | EF_CONTROL_DOWN); 520 EF_SHIFT_DOWN | EF_CONTROL_DOWN);
516 ExpectCharacterComposed(&character_composer, GDK_KEY_3, GDK_KEY_0, 521 ExpectCharacterComposed(&character_composer, GDK_KEY_3, GDK_KEY_0,
517 GDK_KEY_dead_acute, GDK_KEY_4, GDK_KEY_2, 522 GDK_KEY_dead_acute, GDK_KEY_4, GDK_KEY_2,
518 GDK_KEY_space, 0, string16(1, 0x3042)); 523 GDK_KEY_space, 0, base::string16(1, 0x3042));
519 // LATIN CAPITAL LETTER U WITH ACUTE while 'U' is pressed with Ctrl+Shift. 524 // LATIN CAPITAL LETTER U WITH ACUTE while 'U' is pressed with Ctrl+Shift.
520 ExpectKeyFiltered(&character_composer, GDK_KEY_dead_acute, 0); 525 ExpectKeyFiltered(&character_composer, GDK_KEY_dead_acute, 0);
521 EXPECT_TRUE(FilterKeyPress(&character_composer, GDK_KEY_U, 0, 526 EXPECT_TRUE(FilterKeyPress(&character_composer, GDK_KEY_U, 0,
522 EF_SHIFT_DOWN | EF_CONTROL_DOWN)); 527 EF_SHIFT_DOWN | EF_CONTROL_DOWN));
523 EXPECT_EQ(string16(1, 0x00DA), character_composer.composed_character()); 528 EXPECT_EQ(base::string16(1, 0x00DA), character_composer.composed_character());
524 } 529 }
525 530
526 TEST_F(CharacterComposerTest, BlacklistedKeyeventsTest) { 531 TEST_F(CharacterComposerTest, BlacklistedKeyeventsTest) {
527 CharacterComposer character_composer; 532 CharacterComposer character_composer;
528 EXPECT_TRUE(FilterKeyPress(&character_composer, GDK_KEY_dead_acute, 0, 0)); 533 EXPECT_TRUE(FilterKeyPress(&character_composer, GDK_KEY_dead_acute, 0, 0));
529 EXPECT_FALSE(FilterKeyPress(&character_composer, GDK_KEY_s, 0, 0)); 534 EXPECT_FALSE(FilterKeyPress(&character_composer, GDK_KEY_s, 0, 0));
530 ASSERT_EQ(1U, character_composer.composed_character().size()); 535 ASSERT_EQ(1U, character_composer.composed_character().size());
531 EXPECT_EQ(GDK_KEY_apostrophe, character_composer.composed_character().at(0)); 536 EXPECT_EQ(GDK_KEY_apostrophe, character_composer.composed_character().at(0));
532 } 537 }
533 538
534 } // namespace ui 539 } // namespace ui
OLDNEW
« no previous file with comments | « ui/base/ime/chromeos/character_composer.cc ('k') | ui/base/ime/dummy_text_input_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698