| Index: ui/views/controls/textfield/native_textfield_views_unittest.cc
|
| diff --git a/ui/views/controls/textfield/native_textfield_views_unittest.cc b/ui/views/controls/textfield/native_textfield_views_unittest.cc
|
| index 7d80c1098e01bf8f8a22ed11cfe035f0407ebb25..e11f29cdda49c950e915e4fa06c3ea283d05de77 100644
|
| --- a/ui/views/controls/textfield/native_textfield_views_unittest.cc
|
| +++ b/ui/views/controls/textfield/native_textfield_views_unittest.cc
|
| @@ -359,6 +359,84 @@ TEST_F(NativeTextfieldViewsTest, ModelChangesTest) {
|
| EXPECT_TRUE(last_contents_.empty());
|
| }
|
|
|
| +TEST_F(NativeTextfieldViewsTest, ModelChangesTestLowerCase) {
|
| + // Check if |model_|'s text is properly lowercased for STYLE_LOWERCASE.
|
| + InitTextfield(Textfield::STYLE_LOWERCASE);
|
| + EXPECT_EQ(0U, textfield_->GetCursorPosition());
|
| +
|
| + last_contents_.clear();
|
| + textfield_->SetText(ASCIIToUTF16("THIS IS"));
|
| + EXPECT_EQ(0U, textfield_->GetCursorPosition());
|
| +
|
| + EXPECT_STR_EQ("this is", model_->GetText());
|
| + EXPECT_STR_EQ("THIS IS", textfield_->text());
|
| + EXPECT_TRUE(last_contents_.empty());
|
| +
|
| + textfield_->AppendText(ASCIIToUTF16(" A TEST"));
|
| + EXPECT_EQ(0U, textfield_->GetCursorPosition());
|
| + EXPECT_STR_EQ("this is a test", model_->GetText());
|
| + EXPECT_STR_EQ("THIS IS A TEST", textfield_->text());
|
| +
|
| + EXPECT_TRUE(last_contents_.empty());
|
| +}
|
| +
|
| +TEST_F(NativeTextfieldViewsTest, ModelChangesTestLowerCaseI18n) {
|
| + // Check if lower case conversion works for non-ASCII characters.
|
| + InitTextfield(Textfield::STYLE_LOWERCASE);
|
| + EXPECT_EQ(0U, textfield_->GetCursorPosition());
|
| +
|
| + last_contents_.clear();
|
| + // Zenkaku Japanese "ABCabc"
|
| + textfield_->SetText(WideToUTF16(L"\xFF21\xFF22\xFF23\xFF41\xFF42\xFF43"));
|
| + EXPECT_EQ(0U, textfield_->GetCursorPosition());
|
| + // Zenkaku Japanese "abcabc"
|
| + EXPECT_EQ(WideToUTF16(L"\xFF41\xFF42\xFF43\xFF41\xFF42\xFF43"),
|
| + model_->GetText());
|
| + // Zenkaku Japanese "ABCabc"
|
| + EXPECT_EQ(WideToUTF16(L"\xFF21\xFF22\xFF23\xFF41\xFF42\xFF43"),
|
| + textfield_->text());
|
| + EXPECT_TRUE(last_contents_.empty());
|
| +
|
| + // Zenkaku Japanese "XYZxyz"
|
| + textfield_->AppendText(WideToUTF16(L"\xFF38\xFF39\xFF3A\xFF58\xFF59\xFF5A"));
|
| + EXPECT_EQ(0U, textfield_->GetCursorPosition());
|
| + // Zenkaku Japanese "abcabcxyzxyz"
|
| + EXPECT_EQ(WideToUTF16(L"\xFF41\xFF42\xFF43\xFF41\xFF42\xFF43"
|
| + L"\xFF58\xFF59\xFF5A\xFF58\xFF59\xFF5A"),
|
| + model_->GetText());
|
| + // Zenkaku Japanese "ABCabcXYZxyz"
|
| + EXPECT_EQ(WideToUTF16(L"\xFF21\xFF22\xFF23\xFF41\xFF42\xFF43"
|
| + L"\xFF38\xFF39\xFF3A\xFF58\xFF59\xFF5A"),
|
| + textfield_->text());
|
| + EXPECT_TRUE(last_contents_.empty());
|
| +}
|
| +
|
| +TEST_F(NativeTextfieldViewsTest, ModelChangesTestLowerCaseWithLocale) {
|
| + // Check if lower case conversion honors locale properly.
|
| + std::string locale = l10n_util::GetApplicationLocale("");
|
| + base::i18n::SetICUDefaultLocale("tr");
|
| +
|
| + InitTextfield(Textfield::STYLE_LOWERCASE);
|
| + EXPECT_EQ(0U, textfield_->GetCursorPosition());
|
| +
|
| + last_contents_.clear();
|
| + // Turkish 'I' should be converted to dotless 'i' (U+0131).
|
| + textfield_->SetText(WideToUTF16(L"I"));
|
| + EXPECT_EQ(0U, textfield_->GetCursorPosition());
|
| + EXPECT_EQ(WideToUTF16(L"\x0131"), model_->GetText());
|
| + EXPECT_EQ(WideToUTF16(L"I"), textfield_->text());
|
| + EXPECT_TRUE(last_contents_.empty());
|
| +
|
| + base::i18n::SetICUDefaultLocale(locale);
|
| +
|
| + // On default (en) locale, 'I' should be converted to 'i'.
|
| + textfield_->SetText(WideToUTF16(L"I"));
|
| + EXPECT_EQ(0U, textfield_->GetCursorPosition());
|
| + EXPECT_EQ(WideToUTF16(L"i"), model_->GetText());
|
| + EXPECT_EQ(WideToUTF16(L"I"), textfield_->text());
|
| + EXPECT_TRUE(last_contents_.empty());
|
| +}
|
| +
|
| TEST_F(NativeTextfieldViewsTest, KeyTest) {
|
| InitTextfield(Textfield::STYLE_DEFAULT);
|
| SendKeyEvent(ui::VKEY_C, true, false);
|
|
|