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

Side by Side Diff: ui/base/ime/input_method_ibus_unittest.cc

Issue 11783053: Clean Up: Remove ibus namespace. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ui/base/ime/input_method_ibus.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <X11/Xlib.h> 5 #include <X11/Xlib.h>
6 #undef Bool 6 #undef Bool
7 #undef FocusIn 7 #undef FocusIn
8 #undef FocusOut 8 #undef FocusOut
9 #undef None 9 #undef None
10 10
(...skipping 891 matching lines...) Expand 10 before | Expand all | Expand 10 after
902 // bounds are changed or not. 902 // bounds are changed or not.
903 EXPECT_EQ(3, 903 EXPECT_EQ(3,
904 mock_ibus_input_context_client_->set_cursor_location_call_count()); 904 mock_ibus_input_context_client_->set_cursor_location_call_count());
905 } 905 }
906 906
907 TEST_F(InputMethodIBusTest, ExtractCompositionTextTest_NoAttribute) { 907 TEST_F(InputMethodIBusTest, ExtractCompositionTextTest_NoAttribute) {
908 const char kSampleText[] = "Sample Text"; 908 const char kSampleText[] = "Sample Text";
909 const uint32 kCursorPos = 2UL; 909 const uint32 kCursorPos = 2UL;
910 910
911 const string16 utf16_string = UTF8ToUTF16(kSampleText); 911 const string16 utf16_string = UTF8ToUTF16(kSampleText);
912 chromeos::ibus::IBusText ibus_text; 912 chromeos::IBusText ibus_text;
913 ibus_text.set_text(kSampleText); 913 ibus_text.set_text(kSampleText);
914 914
915 CompositionText composition_text; 915 CompositionText composition_text;
916 ime_->ExtractCompositionText(ibus_text, kCursorPos, &composition_text); 916 ime_->ExtractCompositionText(ibus_text, kCursorPos, &composition_text);
917 EXPECT_EQ(UTF8ToUTF16(kSampleText), composition_text.text); 917 EXPECT_EQ(UTF8ToUTF16(kSampleText), composition_text.text);
918 // If there is no selection, |selection| represents cursor position. 918 // If there is no selection, |selection| represents cursor position.
919 EXPECT_EQ(kCursorPos, composition_text.selection.start()); 919 EXPECT_EQ(kCursorPos, composition_text.selection.start());
920 EXPECT_EQ(kCursorPos, composition_text.selection.end()); 920 EXPECT_EQ(kCursorPos, composition_text.selection.end());
921 // If there is no underline, |underlines| contains one underline and it is 921 // If there is no underline, |underlines| contains one underline and it is
922 // whole text underline. 922 // whole text underline.
923 ASSERT_EQ(1UL, composition_text.underlines.size()); 923 ASSERT_EQ(1UL, composition_text.underlines.size());
924 EXPECT_EQ(0UL, composition_text.underlines[0].start_offset); 924 EXPECT_EQ(0UL, composition_text.underlines[0].start_offset);
925 EXPECT_EQ(utf16_string.size(), composition_text.underlines[0].end_offset); 925 EXPECT_EQ(utf16_string.size(), composition_text.underlines[0].end_offset);
926 EXPECT_FALSE(composition_text.underlines[0].thick); 926 EXPECT_FALSE(composition_text.underlines[0].thick);
927 } 927 }
928 928
929 TEST_F(InputMethodIBusTest, ExtractCompositionTextTest_SingleUnderline) { 929 TEST_F(InputMethodIBusTest, ExtractCompositionTextTest_SingleUnderline) {
930 const char kSampleText[] = "\xE3\x81\x82\xE3\x81\x84\xE3\x81\x86" 930 const char kSampleText[] = "\xE3\x81\x82\xE3\x81\x84\xE3\x81\x86"
931 "\xE3\x81\x88\xE3\x81\x8A"; 931 "\xE3\x81\x88\xE3\x81\x8A";
932 const uint32 kCursorPos = 2UL; 932 const uint32 kCursorPos = 2UL;
933 933
934 // Set up ibus text with one underline attribute. 934 // Set up ibus text with one underline attribute.
935 chromeos::ibus::IBusText ibus_text; 935 chromeos::IBusText ibus_text;
936 ibus_text.set_text(kSampleText); 936 ibus_text.set_text(kSampleText);
937 chromeos::ibus::IBusText::UnderlineAttribute underline; 937 chromeos::IBusText::UnderlineAttribute underline;
938 underline.type = chromeos::ibus::IBusText::IBUS_TEXT_UNDERLINE_SINGLE; 938 underline.type = chromeos::IBusText::IBUS_TEXT_UNDERLINE_SINGLE;
939 underline.start_index = 1UL; 939 underline.start_index = 1UL;
940 underline.end_index = 4UL; 940 underline.end_index = 4UL;
941 ibus_text.mutable_underline_attributes()->push_back(underline); 941 ibus_text.mutable_underline_attributes()->push_back(underline);
942 942
943 CompositionText composition_text; 943 CompositionText composition_text;
944 ime_->ExtractCompositionText(ibus_text, kCursorPos, &composition_text); 944 ime_->ExtractCompositionText(ibus_text, kCursorPos, &composition_text);
945 EXPECT_EQ(UTF8ToUTF16(kSampleText), composition_text.text); 945 EXPECT_EQ(UTF8ToUTF16(kSampleText), composition_text.text);
946 // If there is no selection, |selection| represents cursor position. 946 // If there is no selection, |selection| represents cursor position.
947 EXPECT_EQ(kCursorPos, composition_text.selection.start()); 947 EXPECT_EQ(kCursorPos, composition_text.selection.start());
948 EXPECT_EQ(kCursorPos, composition_text.selection.end()); 948 EXPECT_EQ(kCursorPos, composition_text.selection.end());
949 ASSERT_EQ(1UL, composition_text.underlines.size()); 949 ASSERT_EQ(1UL, composition_text.underlines.size());
950 EXPECT_EQ(GetOffsetInUTF16(kSampleText, underline.start_index), 950 EXPECT_EQ(GetOffsetInUTF16(kSampleText, underline.start_index),
951 composition_text.underlines[0].start_offset); 951 composition_text.underlines[0].start_offset);
952 EXPECT_EQ(GetOffsetInUTF16(kSampleText, underline.end_index), 952 EXPECT_EQ(GetOffsetInUTF16(kSampleText, underline.end_index),
953 composition_text.underlines[0].end_offset); 953 composition_text.underlines[0].end_offset);
954 // Single underline represents as black thin line. 954 // Single underline represents as black thin line.
955 EXPECT_EQ(SK_ColorBLACK, composition_text.underlines[0].color); 955 EXPECT_EQ(SK_ColorBLACK, composition_text.underlines[0].color);
956 EXPECT_FALSE(composition_text.underlines[0].thick); 956 EXPECT_FALSE(composition_text.underlines[0].thick);
957 } 957 }
958 958
959 TEST_F(InputMethodIBusTest, ExtractCompositionTextTest_DoubleUnderline) { 959 TEST_F(InputMethodIBusTest, ExtractCompositionTextTest_DoubleUnderline) {
960 const char kSampleText[] = "\xE3\x81\x82\xE3\x81\x84\xE3\x81\x86" 960 const char kSampleText[] = "\xE3\x81\x82\xE3\x81\x84\xE3\x81\x86"
961 "\xE3\x81\x88\xE3\x81\x8A"; 961 "\xE3\x81\x88\xE3\x81\x8A";
962 const uint32 kCursorPos = 2UL; 962 const uint32 kCursorPos = 2UL;
963 963
964 // Set up ibus text with one underline attribute. 964 // Set up ibus text with one underline attribute.
965 chromeos::ibus::IBusText ibus_text; 965 chromeos::IBusText ibus_text;
966 ibus_text.set_text(kSampleText); 966 ibus_text.set_text(kSampleText);
967 chromeos::ibus::IBusText::UnderlineAttribute underline; 967 chromeos::IBusText::UnderlineAttribute underline;
968 underline.type = chromeos::ibus::IBusText::IBUS_TEXT_UNDERLINE_DOUBLE; 968 underline.type = chromeos::IBusText::IBUS_TEXT_UNDERLINE_DOUBLE;
969 underline.start_index = 1UL; 969 underline.start_index = 1UL;
970 underline.end_index = 4UL; 970 underline.end_index = 4UL;
971 ibus_text.mutable_underline_attributes()->push_back(underline); 971 ibus_text.mutable_underline_attributes()->push_back(underline);
972 972
973 CompositionText composition_text; 973 CompositionText composition_text;
974 ime_->ExtractCompositionText(ibus_text, kCursorPos, &composition_text); 974 ime_->ExtractCompositionText(ibus_text, kCursorPos, &composition_text);
975 EXPECT_EQ(UTF8ToUTF16(kSampleText), composition_text.text); 975 EXPECT_EQ(UTF8ToUTF16(kSampleText), composition_text.text);
976 // If there is no selection, |selection| represents cursor position. 976 // If there is no selection, |selection| represents cursor position.
977 EXPECT_EQ(kCursorPos, composition_text.selection.start()); 977 EXPECT_EQ(kCursorPos, composition_text.selection.start());
978 EXPECT_EQ(kCursorPos, composition_text.selection.end()); 978 EXPECT_EQ(kCursorPos, composition_text.selection.end());
979 ASSERT_EQ(1UL, composition_text.underlines.size()); 979 ASSERT_EQ(1UL, composition_text.underlines.size());
980 EXPECT_EQ(GetOffsetInUTF16(kSampleText, underline.start_index), 980 EXPECT_EQ(GetOffsetInUTF16(kSampleText, underline.start_index),
981 composition_text.underlines[0].start_offset); 981 composition_text.underlines[0].start_offset);
982 EXPECT_EQ(GetOffsetInUTF16(kSampleText, underline.end_index), 982 EXPECT_EQ(GetOffsetInUTF16(kSampleText, underline.end_index),
983 composition_text.underlines[0].end_offset); 983 composition_text.underlines[0].end_offset);
984 // Double underline represents as black thick line. 984 // Double underline represents as black thick line.
985 EXPECT_EQ(SK_ColorBLACK, composition_text.underlines[0].color); 985 EXPECT_EQ(SK_ColorBLACK, composition_text.underlines[0].color);
986 EXPECT_TRUE(composition_text.underlines[0].thick); 986 EXPECT_TRUE(composition_text.underlines[0].thick);
987 } 987 }
988 988
989 TEST_F(InputMethodIBusTest, ExtractCompositionTextTest_ErrorUnderline) { 989 TEST_F(InputMethodIBusTest, ExtractCompositionTextTest_ErrorUnderline) {
990 const char kSampleText[] = "\xE3\x81\x82\xE3\x81\x84\xE3\x81\x86" 990 const char kSampleText[] = "\xE3\x81\x82\xE3\x81\x84\xE3\x81\x86"
991 "\xE3\x81\x88\xE3\x81\x8A"; 991 "\xE3\x81\x88\xE3\x81\x8A";
992 const uint32 kCursorPos = 2UL; 992 const uint32 kCursorPos = 2UL;
993 993
994 // Set up ibus text with one underline attribute. 994 // Set up ibus text with one underline attribute.
995 chromeos::ibus::IBusText ibus_text; 995 chromeos::IBusText ibus_text;
996 ibus_text.set_text(kSampleText); 996 ibus_text.set_text(kSampleText);
997 chromeos::ibus::IBusText::UnderlineAttribute underline; 997 chromeos::IBusText::UnderlineAttribute underline;
998 underline.type = chromeos::ibus::IBusText::IBUS_TEXT_UNDERLINE_ERROR; 998 underline.type = chromeos::IBusText::IBUS_TEXT_UNDERLINE_ERROR;
999 underline.start_index = 1UL; 999 underline.start_index = 1UL;
1000 underline.end_index = 4UL; 1000 underline.end_index = 4UL;
1001 ibus_text.mutable_underline_attributes()->push_back(underline); 1001 ibus_text.mutable_underline_attributes()->push_back(underline);
1002 1002
1003 CompositionText composition_text; 1003 CompositionText composition_text;
1004 ime_->ExtractCompositionText(ibus_text, kCursorPos, &composition_text); 1004 ime_->ExtractCompositionText(ibus_text, kCursorPos, &composition_text);
1005 EXPECT_EQ(UTF8ToUTF16(kSampleText), composition_text.text); 1005 EXPECT_EQ(UTF8ToUTF16(kSampleText), composition_text.text);
1006 EXPECT_EQ(kCursorPos, composition_text.selection.start()); 1006 EXPECT_EQ(kCursorPos, composition_text.selection.start());
1007 EXPECT_EQ(kCursorPos, composition_text.selection.end()); 1007 EXPECT_EQ(kCursorPos, composition_text.selection.end());
1008 ASSERT_EQ(1UL, composition_text.underlines.size()); 1008 ASSERT_EQ(1UL, composition_text.underlines.size());
1009 EXPECT_EQ(GetOffsetInUTF16(kSampleText, underline.start_index), 1009 EXPECT_EQ(GetOffsetInUTF16(kSampleText, underline.start_index),
1010 composition_text.underlines[0].start_offset); 1010 composition_text.underlines[0].start_offset);
1011 EXPECT_EQ(GetOffsetInUTF16(kSampleText, underline.end_index), 1011 EXPECT_EQ(GetOffsetInUTF16(kSampleText, underline.end_index),
1012 composition_text.underlines[0].end_offset); 1012 composition_text.underlines[0].end_offset);
1013 // Error underline represents as red thin line. 1013 // Error underline represents as red thin line.
1014 EXPECT_EQ(SK_ColorRED, composition_text.underlines[0].color); 1014 EXPECT_EQ(SK_ColorRED, composition_text.underlines[0].color);
1015 EXPECT_FALSE(composition_text.underlines[0].thick); 1015 EXPECT_FALSE(composition_text.underlines[0].thick);
1016 } 1016 }
1017 1017
1018 TEST_F(InputMethodIBusTest, ExtractCompositionTextTest_Selection) { 1018 TEST_F(InputMethodIBusTest, ExtractCompositionTextTest_Selection) {
1019 const char kSampleText[] = "\xE3\x81\x82\xE3\x81\x84\xE3\x81\x86" 1019 const char kSampleText[] = "\xE3\x81\x82\xE3\x81\x84\xE3\x81\x86"
1020 "\xE3\x81\x88\xE3\x81\x8A"; 1020 "\xE3\x81\x88\xE3\x81\x8A";
1021 const uint32 kCursorPos = 2UL; 1021 const uint32 kCursorPos = 2UL;
1022 1022
1023 // Set up ibus text with one underline attribute. 1023 // Set up ibus text with one underline attribute.
1024 chromeos::ibus::IBusText ibus_text; 1024 chromeos::IBusText ibus_text;
1025 ibus_text.set_text(kSampleText); 1025 ibus_text.set_text(kSampleText);
1026 chromeos::ibus::IBusText::SelectionAttribute selection; 1026 chromeos::IBusText::SelectionAttribute selection;
1027 selection.start_index = 1UL; 1027 selection.start_index = 1UL;
1028 selection.end_index = 4UL; 1028 selection.end_index = 4UL;
1029 ibus_text.mutable_selection_attributes()->push_back(selection); 1029 ibus_text.mutable_selection_attributes()->push_back(selection);
1030 1030
1031 CompositionText composition_text; 1031 CompositionText composition_text;
1032 ime_->ExtractCompositionText(ibus_text, kCursorPos, &composition_text); 1032 ime_->ExtractCompositionText(ibus_text, kCursorPos, &composition_text);
1033 EXPECT_EQ(UTF8ToUTF16(kSampleText), composition_text.text); 1033 EXPECT_EQ(UTF8ToUTF16(kSampleText), composition_text.text);
1034 EXPECT_EQ(kCursorPos, composition_text.selection.start()); 1034 EXPECT_EQ(kCursorPos, composition_text.selection.start());
1035 EXPECT_EQ(kCursorPos, composition_text.selection.end()); 1035 EXPECT_EQ(kCursorPos, composition_text.selection.end());
1036 ASSERT_EQ(1UL, composition_text.underlines.size()); 1036 ASSERT_EQ(1UL, composition_text.underlines.size());
1037 EXPECT_EQ(GetOffsetInUTF16(kSampleText, selection.start_index), 1037 EXPECT_EQ(GetOffsetInUTF16(kSampleText, selection.start_index),
1038 composition_text.underlines[0].start_offset); 1038 composition_text.underlines[0].start_offset);
1039 EXPECT_EQ(GetOffsetInUTF16(kSampleText, selection.end_index), 1039 EXPECT_EQ(GetOffsetInUTF16(kSampleText, selection.end_index),
1040 composition_text.underlines[0].end_offset); 1040 composition_text.underlines[0].end_offset);
1041 EXPECT_EQ(SK_ColorBLACK, composition_text.underlines[0].color); 1041 EXPECT_EQ(SK_ColorBLACK, composition_text.underlines[0].color);
1042 EXPECT_TRUE(composition_text.underlines[0].thick); 1042 EXPECT_TRUE(composition_text.underlines[0].thick);
1043 } 1043 }
1044 1044
1045 TEST_F(InputMethodIBusTest, 1045 TEST_F(InputMethodIBusTest,
1046 ExtractCompositionTextTest_SelectionStartWithCursor) { 1046 ExtractCompositionTextTest_SelectionStartWithCursor) {
1047 const char kSampleText[] = "\xE3\x81\x82\xE3\x81\x84\xE3\x81\x86" 1047 const char kSampleText[] = "\xE3\x81\x82\xE3\x81\x84\xE3\x81\x86"
1048 "\xE3\x81\x88\xE3\x81\x8A"; 1048 "\xE3\x81\x88\xE3\x81\x8A";
1049 const uint32 kCursorPos = 1UL; 1049 const uint32 kCursorPos = 1UL;
1050 1050
1051 // Set up ibus text with one underline attribute. 1051 // Set up ibus text with one underline attribute.
1052 chromeos::ibus::IBusText ibus_text; 1052 chromeos::IBusText ibus_text;
1053 ibus_text.set_text(kSampleText); 1053 ibus_text.set_text(kSampleText);
1054 chromeos::ibus::IBusText::SelectionAttribute selection; 1054 chromeos::IBusText::SelectionAttribute selection;
1055 selection.start_index = kCursorPos; 1055 selection.start_index = kCursorPos;
1056 selection.end_index = 4UL; 1056 selection.end_index = 4UL;
1057 ibus_text.mutable_selection_attributes()->push_back(selection); 1057 ibus_text.mutable_selection_attributes()->push_back(selection);
1058 1058
1059 CompositionText composition_text; 1059 CompositionText composition_text;
1060 ime_->ExtractCompositionText(ibus_text, kCursorPos, &composition_text); 1060 ime_->ExtractCompositionText(ibus_text, kCursorPos, &composition_text);
1061 EXPECT_EQ(UTF8ToUTF16(kSampleText), composition_text.text); 1061 EXPECT_EQ(UTF8ToUTF16(kSampleText), composition_text.text);
1062 // If the cursor position is same as selection bounds, selection start 1062 // If the cursor position is same as selection bounds, selection start
1063 // position become opposit side of selection from cursor. 1063 // position become opposit side of selection from cursor.
1064 EXPECT_EQ(GetOffsetInUTF16(kSampleText, selection.end_index), 1064 EXPECT_EQ(GetOffsetInUTF16(kSampleText, selection.end_index),
1065 composition_text.selection.start()); 1065 composition_text.selection.start());
1066 EXPECT_EQ(GetOffsetInUTF16(kSampleText, kCursorPos), 1066 EXPECT_EQ(GetOffsetInUTF16(kSampleText, kCursorPos),
1067 composition_text.selection.end()); 1067 composition_text.selection.end());
1068 ASSERT_EQ(1UL, composition_text.underlines.size()); 1068 ASSERT_EQ(1UL, composition_text.underlines.size());
1069 EXPECT_EQ(GetOffsetInUTF16(kSampleText, selection.start_index), 1069 EXPECT_EQ(GetOffsetInUTF16(kSampleText, selection.start_index),
1070 composition_text.underlines[0].start_offset); 1070 composition_text.underlines[0].start_offset);
1071 EXPECT_EQ(GetOffsetInUTF16(kSampleText, selection.end_index), 1071 EXPECT_EQ(GetOffsetInUTF16(kSampleText, selection.end_index),
1072 composition_text.underlines[0].end_offset); 1072 composition_text.underlines[0].end_offset);
1073 EXPECT_EQ(SK_ColorBLACK, composition_text.underlines[0].color); 1073 EXPECT_EQ(SK_ColorBLACK, composition_text.underlines[0].color);
1074 EXPECT_TRUE(composition_text.underlines[0].thick); 1074 EXPECT_TRUE(composition_text.underlines[0].thick);
1075 } 1075 }
1076 1076
1077 TEST_F(InputMethodIBusTest, ExtractCompositionTextTest_SelectionEndWithCursor) { 1077 TEST_F(InputMethodIBusTest, ExtractCompositionTextTest_SelectionEndWithCursor) {
1078 const char kSampleText[] = "\xE3\x81\x82\xE3\x81\x84\xE3\x81\x86" 1078 const char kSampleText[] = "\xE3\x81\x82\xE3\x81\x84\xE3\x81\x86"
1079 "\xE3\x81\x88\xE3\x81\x8A"; 1079 "\xE3\x81\x88\xE3\x81\x8A";
1080 const uint32 kCursorPos = 4UL; 1080 const uint32 kCursorPos = 4UL;
1081 1081
1082 // Set up ibus text with one underline attribute. 1082 // Set up ibus text with one underline attribute.
1083 chromeos::ibus::IBusText ibus_text; 1083 chromeos::IBusText ibus_text;
1084 ibus_text.set_text(kSampleText); 1084 ibus_text.set_text(kSampleText);
1085 chromeos::ibus::IBusText::SelectionAttribute selection; 1085 chromeos::IBusText::SelectionAttribute selection;
1086 selection.start_index = 1UL; 1086 selection.start_index = 1UL;
1087 selection.end_index = kCursorPos; 1087 selection.end_index = kCursorPos;
1088 ibus_text.mutable_selection_attributes()->push_back(selection); 1088 ibus_text.mutable_selection_attributes()->push_back(selection);
1089 1089
1090 CompositionText composition_text; 1090 CompositionText composition_text;
1091 ime_->ExtractCompositionText(ibus_text, kCursorPos, &composition_text); 1091 ime_->ExtractCompositionText(ibus_text, kCursorPos, &composition_text);
1092 EXPECT_EQ(UTF8ToUTF16(kSampleText), composition_text.text); 1092 EXPECT_EQ(UTF8ToUTF16(kSampleText), composition_text.text);
1093 // If the cursor position is same as selection bounds, selection start 1093 // If the cursor position is same as selection bounds, selection start
1094 // position become opposit side of selection from cursor. 1094 // position become opposit side of selection from cursor.
1095 EXPECT_EQ(GetOffsetInUTF16(kSampleText, selection.start_index), 1095 EXPECT_EQ(GetOffsetInUTF16(kSampleText, selection.start_index),
(...skipping 558 matching lines...) Expand 10 before | Expand all | Expand 10 after
1654 1654
1655 // Do callback. 1655 // Do callback.
1656 success_consume_handler.RunCallback(KEYEVENT_CONSUME); 1656 success_consume_handler.RunCallback(KEYEVENT_CONSUME);
1657 1657
1658 EXPECT_EQ(0, ime_->process_key_event_post_ime_call_count()); 1658 EXPECT_EQ(0, ime_->process_key_event_post_ime_call_count());
1659 } 1659 }
1660 1660
1661 // TODO(nona): Introduce ProcessKeyEventPostIME tests(crbug.com/156593). 1661 // TODO(nona): Introduce ProcessKeyEventPostIME tests(crbug.com/156593).
1662 1662
1663 } // namespace ui 1663 } // namespace ui
OLDNEW
« no previous file with comments | « ui/base/ime/input_method_ibus.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698