Index: chrome/browser/chromeos/input_method/virtual_keyboard_selector_unittest.cc |
diff --git a/chrome/browser/chromeos/input_method/virtual_keyboard_selector_unittest.cc b/chrome/browser/chromeos/input_method/virtual_keyboard_selector_unittest.cc |
index 95b8656006cc5e5e6cf18cf7bc3970711345ed39..5eb5125dba6f701afc08e23f2a9e530559ecc8e5 100644 |
--- a/chrome/browser/chromeos/input_method/virtual_keyboard_selector_unittest.cc |
+++ b/chrome/browser/chromeos/input_method/virtual_keyboard_selector_unittest.cc |
@@ -32,7 +32,8 @@ namespace input_method { |
class TestableVirtualKeyboardSelector : public VirtualKeyboardSelector { |
public: |
// Change access rights. |
- using VirtualKeyboardSelector::SelectVirtualKeyboardInternal; |
+ using VirtualKeyboardSelector::SelectVirtualKeyboardWithoutPreferences; |
+ using VirtualKeyboardSelector::user_preference; |
}; |
TEST(VirtualKeyboardSelectorTest, TestNoKeyboard) { |
@@ -41,21 +42,55 @@ TEST(VirtualKeyboardSelectorTest, TestNoKeyboard) { |
EXPECT_EQ(NULL, selector.SelectVirtualKeyboard("")); |
} |
+TEST(VirtualKeyboardSelectorTest, TestAddVirtualKeyboard) { |
+ static const char* layouts[] = { "a", "b", "c" }; |
+ |
+ // The first two keyboards have the same URL. |
+ VirtualKeyboard virtual_keyboard_1( |
+ GURL("http://url1"), CreateLayoutSet(layouts), true /* is_system */); |
+ VirtualKeyboard virtual_keyboard_2( |
+ GURL("http://url1"), CreateLayoutSet(layouts), false /* is_system */); |
+ VirtualKeyboard virtual_keyboard_3( |
+ GURL("http://url2"), CreateLayoutSet(layouts), false /* is_system */); |
+ |
+ TestableVirtualKeyboardSelector selector; |
+ EXPECT_TRUE(selector.AddVirtualKeyboard( |
+ virtual_keyboard_1.url(), |
+ virtual_keyboard_1.supported_layouts(), |
+ virtual_keyboard_1.is_system())); |
+ |
+ // You can't add the same keyboard twice. |
+ EXPECT_FALSE(selector.AddVirtualKeyboard( |
+ virtual_keyboard_1.url(), |
+ virtual_keyboard_1.supported_layouts(), |
+ virtual_keyboard_1.is_system())); |
+ EXPECT_FALSE(selector.AddVirtualKeyboard( |
+ virtual_keyboard_2.url(), |
+ virtual_keyboard_2.supported_layouts(), |
+ virtual_keyboard_2.is_system())); |
+ |
+ EXPECT_TRUE(selector.AddVirtualKeyboard( |
+ virtual_keyboard_3.url(), |
+ virtual_keyboard_3.supported_layouts(), |
+ virtual_keyboard_3.is_system())); |
+} |
+ |
TEST(VirtualKeyboardSelectorTest, TestSystemKeyboard) { |
static const char* layouts[] = { "a", "b", "c" }; |
VirtualKeyboard system_virtual_keyboard( |
GURL("http://system"), CreateLayoutSet(layouts), true /* is_system */); |
TestableVirtualKeyboardSelector selector; |
- selector.AddVirtualKeyboard(system_virtual_keyboard.url(), |
- system_virtual_keyboard.supported_layouts(), |
- system_virtual_keyboard.is_system()); |
+ EXPECT_TRUE(selector.AddVirtualKeyboard( |
+ system_virtual_keyboard.url(), |
+ system_virtual_keyboard.supported_layouts(), |
+ system_virtual_keyboard.is_system())); |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("a")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); |
EXPECT_TRUE(system_virtual_keyboard == *selector.SelectVirtualKeyboard("a")); |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("b")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("b")); |
EXPECT_TRUE(system_virtual_keyboard == *selector.SelectVirtualKeyboard("b")); |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("c")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); |
EXPECT_TRUE(system_virtual_keyboard == *selector.SelectVirtualKeyboard("c")); |
EXPECT_EQ(NULL, selector.SelectVirtualKeyboard("d")); |
EXPECT_EQ(NULL, selector.SelectVirtualKeyboard("aa")); |
@@ -72,48 +107,50 @@ TEST(VirtualKeyboardSelectorTest, TestTwoSystemKeyboards) { |
GURL("http://system2"), CreateLayoutSet(layouts_2), true /* is_system */); |
TestableVirtualKeyboardSelector selector; |
- selector.AddVirtualKeyboard(system_virtual_keyboard_1.url(), |
- system_virtual_keyboard_1.supported_layouts(), |
- system_virtual_keyboard_1.is_system()); |
- selector.AddVirtualKeyboard(system_virtual_keyboard_2.url(), |
- system_virtual_keyboard_2.supported_layouts(), |
- system_virtual_keyboard_2.is_system()); |
+ EXPECT_TRUE(selector.AddVirtualKeyboard( |
+ system_virtual_keyboard_1.url(), |
+ system_virtual_keyboard_1.supported_layouts(), |
+ system_virtual_keyboard_1.is_system())); |
+ EXPECT_TRUE(selector.AddVirtualKeyboard( |
+ system_virtual_keyboard_2.url(), |
+ system_virtual_keyboard_2.supported_layouts(), |
+ system_virtual_keyboard_2.is_system())); |
// At this point, system_virtual_keyboard_2 has higher priority since it's |
// added later than system_virtual_keyboard_1. |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("a")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); |
EXPECT_TRUE(system_virtual_keyboard_2 == |
*selector.SelectVirtualKeyboard("a")); |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("c")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); |
EXPECT_TRUE(system_virtual_keyboard_2 == |
*selector.SelectVirtualKeyboard("c")); |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("d")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("d")); |
EXPECT_TRUE(system_virtual_keyboard_2 == |
*selector.SelectVirtualKeyboard("d")); |
// Request "b". system_virtual_keyboard_1 should be returned. |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("b")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("b")); |
EXPECT_TRUE(system_virtual_keyboard_1 == |
*selector.SelectVirtualKeyboard("b")); |
// Now system_virtual_keyboard_1 should be selected for 'a' and 'c' since |
// it's the current virtual keyboard. |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("a")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); |
EXPECT_TRUE(system_virtual_keyboard_1 == |
*selector.SelectVirtualKeyboard("a")); |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("c")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); |
EXPECT_TRUE(system_virtual_keyboard_1 == |
*selector.SelectVirtualKeyboard("c")); |
// Request "d" again. system_virtual_keyboard_2 should be returned. |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("d")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("d")); |
EXPECT_TRUE(system_virtual_keyboard_2 == |
*selector.SelectVirtualKeyboard("d")); |
// This time, system_virtual_keyboard_2 should be selected for 'a' and 'c'. |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("a")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); |
EXPECT_TRUE(system_virtual_keyboard_2 == |
*selector.SelectVirtualKeyboard("a")); |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("c")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); |
EXPECT_TRUE(system_virtual_keyboard_2 == |
*selector.SelectVirtualKeyboard("c")); |
} |
@@ -124,14 +161,15 @@ TEST(VirtualKeyboardSelectorTest, TestUserKeyboard) { |
GURL("http://user"), CreateLayoutSet(layouts), false /* is_system */); |
TestableVirtualKeyboardSelector selector; |
- selector.AddVirtualKeyboard(user_virtual_keyboard.url(), |
- user_virtual_keyboard.supported_layouts(), |
- user_virtual_keyboard.is_system()); |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("a")); |
+ EXPECT_TRUE(selector.AddVirtualKeyboard( |
+ user_virtual_keyboard.url(), |
+ user_virtual_keyboard.supported_layouts(), |
+ user_virtual_keyboard.is_system())); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); |
EXPECT_TRUE(user_virtual_keyboard == *selector.SelectVirtualKeyboard("a")); |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("b")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("b")); |
EXPECT_TRUE(user_virtual_keyboard == *selector.SelectVirtualKeyboard("b")); |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("c")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); |
EXPECT_TRUE(user_virtual_keyboard == *selector.SelectVirtualKeyboard("c")); |
EXPECT_EQ(NULL, selector.SelectVirtualKeyboard("d")); |
EXPECT_EQ(NULL, selector.SelectVirtualKeyboard("aa")); |
@@ -148,48 +186,50 @@ TEST(VirtualKeyboardSelectorTest, TestTwoUserKeyboards) { |
GURL("http://user2"), CreateLayoutSet(layouts_2), false /* is_system */); |
TestableVirtualKeyboardSelector selector; |
- selector.AddVirtualKeyboard(user_virtual_keyboard_1.url(), |
- user_virtual_keyboard_1.supported_layouts(), |
- user_virtual_keyboard_1.is_system()); |
- selector.AddVirtualKeyboard(user_virtual_keyboard_2.url(), |
- user_virtual_keyboard_2.supported_layouts(), |
- user_virtual_keyboard_2.is_system()); |
+ EXPECT_TRUE(selector.AddVirtualKeyboard( |
+ user_virtual_keyboard_1.url(), |
+ user_virtual_keyboard_1.supported_layouts(), |
+ user_virtual_keyboard_1.is_system())); |
+ EXPECT_TRUE(selector.AddVirtualKeyboard( |
+ user_virtual_keyboard_2.url(), |
+ user_virtual_keyboard_2.supported_layouts(), |
+ user_virtual_keyboard_2.is_system())); |
// At this point, user_virtual_keyboard_2 has higher priority since it's |
// added later than user_virtual_keyboard_1. |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("a")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); |
EXPECT_TRUE(user_virtual_keyboard_2 == |
*selector.SelectVirtualKeyboard("a")); |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("c")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); |
EXPECT_TRUE(user_virtual_keyboard_2 == |
*selector.SelectVirtualKeyboard("c")); |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("d")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("d")); |
EXPECT_TRUE(user_virtual_keyboard_2 == |
*selector.SelectVirtualKeyboard("d")); |
// Request "b". user_virtual_keyboard_1 should be returned. |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("b")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("b")); |
EXPECT_TRUE(user_virtual_keyboard_1 == |
*selector.SelectVirtualKeyboard("b")); |
// Now user_virtual_keyboard_1 should be selected for 'a' and 'c' since |
// it's the current virtual keyboard. |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("a")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); |
EXPECT_TRUE(user_virtual_keyboard_1 == |
*selector.SelectVirtualKeyboard("a")); |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("c")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); |
EXPECT_TRUE(user_virtual_keyboard_1 == |
*selector.SelectVirtualKeyboard("c")); |
// Request "d" again. user_virtual_keyboard_2 should be returned. |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("d")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("d")); |
EXPECT_TRUE(user_virtual_keyboard_2 == |
*selector.SelectVirtualKeyboard("d")); |
// This time, user_virtual_keyboard_2 should be selected for 'a' and 'c'. |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("a")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); |
EXPECT_TRUE(user_virtual_keyboard_2 == |
*selector.SelectVirtualKeyboard("a")); |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("c")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); |
EXPECT_TRUE(user_virtual_keyboard_2 == |
*selector.SelectVirtualKeyboard("c")); |
} |
@@ -210,79 +250,83 @@ TEST(VirtualKeyboardSelectorTest, TestUserSystemMixed) { |
GURL("http://system2"), CreateLayoutSet(layouts_2), true /* is_system */); |
TestableVirtualKeyboardSelector selector; |
- selector.AddVirtualKeyboard(user_virtual_keyboard_1.url(), |
- user_virtual_keyboard_1.supported_layouts(), |
- user_virtual_keyboard_1.is_system()); |
- selector.AddVirtualKeyboard(user_virtual_keyboard_2.url(), |
- user_virtual_keyboard_2.supported_layouts(), |
- user_virtual_keyboard_2.is_system()); |
- selector.AddVirtualKeyboard(system_virtual_keyboard_1.url(), |
- system_virtual_keyboard_1.supported_layouts(), |
- system_virtual_keyboard_1.is_system()); |
- selector.AddVirtualKeyboard(system_virtual_keyboard_2.url(), |
- system_virtual_keyboard_2.supported_layouts(), |
- system_virtual_keyboard_2.is_system()); |
+ EXPECT_TRUE(selector.AddVirtualKeyboard( |
+ user_virtual_keyboard_1.url(), |
+ user_virtual_keyboard_1.supported_layouts(), |
+ user_virtual_keyboard_1.is_system())); |
+ EXPECT_TRUE(selector.AddVirtualKeyboard( |
+ user_virtual_keyboard_2.url(), |
+ user_virtual_keyboard_2.supported_layouts(), |
+ user_virtual_keyboard_2.is_system())); |
+ EXPECT_TRUE(selector.AddVirtualKeyboard( |
+ system_virtual_keyboard_1.url(), |
+ system_virtual_keyboard_1.supported_layouts(), |
+ system_virtual_keyboard_1.is_system())); |
+ EXPECT_TRUE(selector.AddVirtualKeyboard( |
+ system_virtual_keyboard_2.url(), |
+ system_virtual_keyboard_2.supported_layouts(), |
+ system_virtual_keyboard_2.is_system())); |
// At this point, user_virtual_keyboard_2 has the highest priority. |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("a")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); |
EXPECT_TRUE(user_virtual_keyboard_2 == |
*selector.SelectVirtualKeyboard("a")); |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("c")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); |
EXPECT_TRUE(user_virtual_keyboard_2 == |
*selector.SelectVirtualKeyboard("c")); |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("d")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("d")); |
EXPECT_TRUE(user_virtual_keyboard_2 == |
*selector.SelectVirtualKeyboard("d")); |
// Request "b". user_virtual_keyboard_1 should be returned. |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("b")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("b")); |
EXPECT_TRUE(user_virtual_keyboard_1 == |
*selector.SelectVirtualKeyboard("b")); |
// Now user_virtual_keyboard_1 should be selected for 'a' and 'c' since |
// it's the current virtual keyboard. |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("a")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); |
EXPECT_TRUE(user_virtual_keyboard_1 == |
*selector.SelectVirtualKeyboard("a")); |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("c")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); |
EXPECT_TRUE(user_virtual_keyboard_1 == |
*selector.SelectVirtualKeyboard("c")); |
// Request "x". system_virtual_keyboard_2 should be returned (since it's |
// added later than system_virtual_keyboard_1). |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("x")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("x")); |
EXPECT_TRUE(system_virtual_keyboard_1 == |
*selector.SelectVirtualKeyboard("x")); |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("y")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("y")); |
EXPECT_TRUE(system_virtual_keyboard_1 == |
*selector.SelectVirtualKeyboard("y")); |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("a")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); |
EXPECT_TRUE(system_virtual_keyboard_1 == |
*selector.SelectVirtualKeyboard("a")); |
// Switch to system_virtual_keyboard_2. |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("z")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("z")); |
EXPECT_TRUE(system_virtual_keyboard_2 == |
*selector.SelectVirtualKeyboard("z")); |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("y")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("y")); |
EXPECT_TRUE(system_virtual_keyboard_2 == |
*selector.SelectVirtualKeyboard("y")); |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("a")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); |
EXPECT_TRUE(system_virtual_keyboard_2 == |
*selector.SelectVirtualKeyboard("a")); |
// Switch back to system_virtual_keyboard_2. |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("x")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("x")); |
EXPECT_TRUE(system_virtual_keyboard_1 == |
*selector.SelectVirtualKeyboard("x")); |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("y")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("y")); |
EXPECT_TRUE(system_virtual_keyboard_1 == |
*selector.SelectVirtualKeyboard("y")); |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("a")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); |
EXPECT_TRUE(system_virtual_keyboard_1 == |
*selector.SelectVirtualKeyboard("a")); |
// Switch back to user_virtual_keyboard_1. |
- ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("c")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); |
EXPECT_TRUE(user_virtual_keyboard_2 == |
*selector.SelectVirtualKeyboard("c")); |
} |
@@ -306,5 +350,162 @@ TEST(VirtualKeyboardTest, TestUrl) { |
system_virtual_keyboard.GetURLForLayout("").spec()); |
} |
+TEST(VirtualKeyboardSelectorTest, TestSetUserPreference1) { |
+ static const char* layouts[] = { "a", "b", "c" }; |
+ |
+ VirtualKeyboard user_virtual_keyboard( |
+ GURL("http://user"), CreateLayoutSet(layouts), false /* is_system */); |
+ |
+ TestableVirtualKeyboardSelector selector; |
+ EXPECT_TRUE(selector.AddVirtualKeyboard( |
+ user_virtual_keyboard.url(), |
+ user_virtual_keyboard.supported_layouts(), |
+ user_virtual_keyboard.is_system())); |
+ |
+ EXPECT_EQ(0U, selector.user_preference().size()); |
+ EXPECT_FALSE(selector.SetUserPreference("bad_layout", GURL("http://user"))); |
+ EXPECT_EQ(0U, selector.user_preference().size()); |
+ EXPECT_FALSE(selector.SetUserPreference("a", GURL("http://bad_url"))); |
+ EXPECT_EQ(0U, selector.user_preference().size()); |
+ EXPECT_TRUE(selector.SetUserPreference("a", GURL("http://user"))); |
+ EXPECT_EQ(1U, selector.user_preference().size()); |
+ EXPECT_TRUE(selector.SetUserPreference("b", GURL("http://user"))); |
+ EXPECT_EQ(2U, selector.user_preference().size()); |
+ EXPECT_TRUE(selector.SetUserPreference("c", GURL("http://user"))); |
+ EXPECT_EQ(3U, selector.user_preference().size()); |
+} |
+ |
+TEST(VirtualKeyboardSelectorTest, TestSetUserPreference2) { |
+ static const char* layouts[] = { "a", "b", "c" }; |
+ |
+ VirtualKeyboard system_virtual_keyboard( |
+ GURL("http://system"), CreateLayoutSet(layouts), true /* is_system */); |
+ |
+ TestableVirtualKeyboardSelector selector; |
+ EXPECT_TRUE(selector.AddVirtualKeyboard( |
+ system_virtual_keyboard.url(), |
+ system_virtual_keyboard.supported_layouts(), |
+ system_virtual_keyboard.is_system())); |
+ |
+ EXPECT_EQ(0U, selector.user_preference().size()); |
+ EXPECT_FALSE(selector.SetUserPreference("bad_layout", GURL("http://system"))); |
+ EXPECT_EQ(0U, selector.user_preference().size()); |
+ EXPECT_FALSE(selector.SetUserPreference("a", GURL("http://bad_url"))); |
+ EXPECT_EQ(0U, selector.user_preference().size()); |
+ EXPECT_TRUE(selector.SetUserPreference("a", GURL("http://system"))); |
+ EXPECT_EQ(1U, selector.user_preference().size()); |
+ EXPECT_TRUE(selector.SetUserPreference("b", GURL("http://system"))); |
+ EXPECT_EQ(2U, selector.user_preference().size()); |
+ EXPECT_TRUE(selector.SetUserPreference("c", GURL("http://system"))); |
+ EXPECT_EQ(3U, selector.user_preference().size()); |
+} |
+ |
+TEST(VirtualKeyboardSelectorTest, TestSetUserPreferenceUserSystemMixed) { |
+ static const char* ulayouts_1[] = { "a", "b", "c" }; |
+ static const char* ulayouts_2[] = { "a", "c", "d" }; |
+ static const char* layouts_1[] = { "a", "x", "y" }; |
+ static const char* layouts_2[] = { "a", "y", "z" }; |
+ |
+ VirtualKeyboard user_virtual_keyboard_1( |
+ GURL("http://user1"), CreateLayoutSet(ulayouts_1), false /* is_system */); |
+ VirtualKeyboard user_virtual_keyboard_2( |
+ GURL("http://user2"), CreateLayoutSet(ulayouts_2), false /* is_system */); |
+ VirtualKeyboard system_virtual_keyboard_1( |
+ GURL("http://system1"), CreateLayoutSet(layouts_1), true /* is_system */); |
+ VirtualKeyboard system_virtual_keyboard_2( |
+ GURL("http://system2"), CreateLayoutSet(layouts_2), true /* is_system */); |
+ |
+ TestableVirtualKeyboardSelector selector; |
+ EXPECT_TRUE(selector.AddVirtualKeyboard( |
+ user_virtual_keyboard_1.url(), |
+ user_virtual_keyboard_1.supported_layouts(), |
+ user_virtual_keyboard_1.is_system())); |
+ EXPECT_TRUE(selector.AddVirtualKeyboard( |
+ user_virtual_keyboard_2.url(), |
+ user_virtual_keyboard_2.supported_layouts(), |
+ user_virtual_keyboard_2.is_system())); |
+ EXPECT_TRUE(selector.AddVirtualKeyboard( |
+ system_virtual_keyboard_1.url(), |
+ system_virtual_keyboard_1.supported_layouts(), |
+ system_virtual_keyboard_1.is_system())); |
+ EXPECT_TRUE(selector.AddVirtualKeyboard( |
+ system_virtual_keyboard_2.url(), |
+ system_virtual_keyboard_2.supported_layouts(), |
+ system_virtual_keyboard_2.is_system())); |
+ |
+ // Set and then remove user pref (=NOP). |
+ EXPECT_TRUE(selector.SetUserPreference("a", GURL("http://system1"))); |
+ selector.RemoveUserPreference("a"); |
+ |
+ // At this point, user_virtual_keyboard_2 has the highest priority. |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); |
+ EXPECT_TRUE(user_virtual_keyboard_2 == |
+ *selector.SelectVirtualKeyboard("a")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); |
+ EXPECT_TRUE(user_virtual_keyboard_2 == |
+ *selector.SelectVirtualKeyboard("c")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("d")); |
+ EXPECT_TRUE(user_virtual_keyboard_2 == |
+ *selector.SelectVirtualKeyboard("d")); |
+ |
+ // Request "b". user_virtual_keyboard_1 should be returned. |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("b")); |
+ EXPECT_TRUE(user_virtual_keyboard_1 == |
+ *selector.SelectVirtualKeyboard("b")); |
+ |
+ // Set user pref. |
+ EXPECT_TRUE(selector.SetUserPreference("a", GURL("http://user2"))); |
+ |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); |
+ EXPECT_TRUE(user_virtual_keyboard_2 == // follow the user pref. |
+ *selector.SelectVirtualKeyboard("a")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); |
+ EXPECT_TRUE(user_virtual_keyboard_2 == |
+ *selector.SelectVirtualKeyboard("c")); |
+ |
+ // Request "x". system_virtual_keyboard_2 should be returned (since it's |
+ // added later than system_virtual_keyboard_1). |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("x")); |
+ EXPECT_TRUE(system_virtual_keyboard_1 == |
+ *selector.SelectVirtualKeyboard("x")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("y")); |
+ EXPECT_TRUE(system_virtual_keyboard_1 == |
+ *selector.SelectVirtualKeyboard("y")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); |
+ EXPECT_TRUE(user_virtual_keyboard_2 == // follow the user pref. |
+ *selector.SelectVirtualKeyboard("a")); |
+ |
+ // Switch to system_virtual_keyboard_2. |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("z")); |
+ EXPECT_TRUE(system_virtual_keyboard_2 == |
+ *selector.SelectVirtualKeyboard("z")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("y")); |
+ EXPECT_TRUE(system_virtual_keyboard_2 == |
+ *selector.SelectVirtualKeyboard("y")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); |
+ EXPECT_TRUE(user_virtual_keyboard_2 == // follow the user pref. |
+ *selector.SelectVirtualKeyboard("a")); |
+ |
+ // Switch back to system_virtual_keyboard_2. |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("x")); |
+ EXPECT_TRUE(system_virtual_keyboard_1 == |
+ *selector.SelectVirtualKeyboard("x")); |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("y")); |
+ EXPECT_TRUE(system_virtual_keyboard_1 == |
+ *selector.SelectVirtualKeyboard("y")); |
+ |
+ // Remove it. |
+ selector.RemoveUserPreference("a"); |
+ |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); |
+ EXPECT_TRUE(system_virtual_keyboard_1 == // user pref is no longer available |
+ *selector.SelectVirtualKeyboard("a")); |
+ |
+ // Switch back to user_virtual_keyboard_1. |
+ ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); |
+ EXPECT_TRUE(user_virtual_keyboard_2 == |
+ *selector.SelectVirtualKeyboard("c")); |
+} |
+ |
} // namespace input_method |
} // namespace chromeos |