| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "base/message_loop/message_loop.h" | 5 #include "base/message_loop/message_loop.h" |
| 6 #include "base/strings/utf_string_conversions.h" | 6 #include "base/strings/utf_string_conversions.h" |
| 7 #include "mojo/public/cpp/bindings/binding_set.h" | 7 #include "mojo/public/cpp/bindings/binding_set.h" |
| 8 #include "services/ui/public/interfaces/ime/ime_struct_traits_test.mojom.h" | 8 #include "services/ui/public/interfaces/ime/ime_struct_traits_test.mojom.h" |
| 9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
| 10 #include "ui/base/ime/composition_text.h" | 10 #include "ui/base/ime/composition_text.h" |
| 11 #include "ui/base/ime/composition_underline.h" | 11 #include "ui/base/ime/composition_underline.h" |
| 12 | 12 |
| 13 namespace ui { | 13 namespace ui { |
| 14 | 14 |
| 15 namespace { | 15 namespace { |
| 16 | 16 |
| 17 class IMEStructTraitsTest : public testing::Test, | 17 class IMEStructTraitsTest : public testing::Test, |
| 18 public mojom::IMEStructTraitsTest { | 18 public mojom::IMEStructTraitsTest { |
| 19 public: | 19 public: |
| 20 IMEStructTraitsTest() {} | 20 IMEStructTraitsTest() {} |
| 21 | 21 |
| 22 protected: | 22 protected: |
| 23 mojom::IMEStructTraitsTestPtr GetTraitsTestProxy() { | 23 mojom::IMEStructTraitsTestPtr GetTraitsTestProxy() { |
| 24 return traits_test_bindings_.CreateInterfacePtrAndBind(this); | 24 return traits_test_bindings_.CreateInterfacePtrAndBind(this); |
| 25 } | 25 } |
| 26 | 26 |
| 27 private: | 27 private: |
| 28 // mojom::IMEStructTraitsTest: | 28 // mojom::IMEStructTraitsTest: |
| 29 void EchoCandidateWindowProperties( |
| 30 const CandidateWindow::CandidateWindowProperty& in, |
| 31 const EchoCandidateWindowPropertiesCallback& callback) override { |
| 32 callback.Run(in); |
| 33 } |
| 34 void EchoCandidateWindowEntry( |
| 35 const CandidateWindow::Entry& in, |
| 36 const EchoCandidateWindowEntryCallback& callback) override { |
| 37 callback.Run(in); |
| 38 } |
| 29 void EchoCompositionText( | 39 void EchoCompositionText( |
| 30 const CompositionText& in, | 40 const CompositionText& in, |
| 31 const EchoCompositionTextCallback& callback) override { | 41 const EchoCompositionTextCallback& callback) override { |
| 32 callback.Run(in); | 42 callback.Run(in); |
| 33 } | 43 } |
| 34 void EchoTextInputMode(TextInputMode in, | 44 void EchoTextInputMode(TextInputMode in, |
| 35 const EchoTextInputModeCallback& callback) override { | 45 const EchoTextInputModeCallback& callback) override { |
| 36 callback.Run(in); | 46 callback.Run(in); |
| 37 } | 47 } |
| 38 void EchoTextInputType(TextInputType in, | 48 void EchoTextInputType(TextInputType in, |
| 39 const EchoTextInputTypeCallback& callback) override { | 49 const EchoTextInputTypeCallback& callback) override { |
| 40 callback.Run(in); | 50 callback.Run(in); |
| 41 } | 51 } |
| 42 | 52 |
| 43 base::MessageLoop loop_; // A MessageLoop is needed for Mojo IPC to work. | 53 base::MessageLoop loop_; // A MessageLoop is needed for Mojo IPC to work. |
| 44 mojo::BindingSet<mojom::IMEStructTraitsTest> traits_test_bindings_; | 54 mojo::BindingSet<mojom::IMEStructTraitsTest> traits_test_bindings_; |
| 45 | 55 |
| 46 DISALLOW_COPY_AND_ASSIGN(IMEStructTraitsTest); | 56 DISALLOW_COPY_AND_ASSIGN(IMEStructTraitsTest); |
| 47 }; | 57 }; |
| 48 | 58 |
| 49 } // namespace | 59 } // namespace |
| 50 | 60 |
| 61 TEST_F(IMEStructTraitsTest, CandidateWindowProperties) { |
| 62 CandidateWindow::CandidateWindowProperty input; |
| 63 input.page_size = 7; |
| 64 input.cursor_position = 3; |
| 65 input.is_cursor_visible = true; |
| 66 input.is_vertical = false; |
| 67 input.show_window_at_composition = true; |
| 68 input.auxiliary_text = "abcdefghij"; |
| 69 input.is_auxiliary_text_visible = false; |
| 70 |
| 71 mojom::IMEStructTraitsTestPtr proxy = GetTraitsTestProxy(); |
| 72 CandidateWindow::CandidateWindowProperty output; |
| 73 proxy->EchoCandidateWindowProperties(input, &output); |
| 74 |
| 75 EXPECT_EQ(input.page_size, output.page_size); |
| 76 EXPECT_EQ(input.cursor_position, output.cursor_position); |
| 77 EXPECT_EQ(input.is_cursor_visible, output.is_cursor_visible); |
| 78 EXPECT_EQ(input.is_vertical, output.is_vertical); |
| 79 EXPECT_EQ(input.show_window_at_composition, |
| 80 output.show_window_at_composition); |
| 81 EXPECT_EQ(input.auxiliary_text, output.auxiliary_text); |
| 82 EXPECT_EQ(input.is_auxiliary_text_visible, output.is_auxiliary_text_visible); |
| 83 |
| 84 // Reverse boolean fields and check we still serialize/deserialize correctly. |
| 85 input.is_cursor_visible = !input.is_cursor_visible; |
| 86 input.is_vertical = !input.is_vertical; |
| 87 input.show_window_at_composition = !input.show_window_at_composition; |
| 88 input.is_auxiliary_text_visible = !input.is_auxiliary_text_visible; |
| 89 proxy->EchoCandidateWindowProperties(input, &output); |
| 90 |
| 91 EXPECT_EQ(input.is_cursor_visible, output.is_cursor_visible); |
| 92 EXPECT_EQ(input.is_vertical, output.is_vertical); |
| 93 EXPECT_EQ(input.show_window_at_composition, |
| 94 output.show_window_at_composition); |
| 95 EXPECT_EQ(input.is_auxiliary_text_visible, output.is_auxiliary_text_visible); |
| 96 } |
| 97 |
| 98 TEST_F(IMEStructTraitsTest, CandidateWindowEntry) { |
| 99 CandidateWindow::Entry input; |
| 100 input.value = base::UTF8ToUTF16("entry_value"); |
| 101 input.label = base::UTF8ToUTF16("entry_label"); |
| 102 input.annotation = base::UTF8ToUTF16("entry_annotation"); |
| 103 input.description_title = base::UTF8ToUTF16("entry_description_title"); |
| 104 input.description_body = base::UTF8ToUTF16("entry_description_body"); |
| 105 |
| 106 mojom::IMEStructTraitsTestPtr proxy = GetTraitsTestProxy(); |
| 107 CandidateWindow::Entry output; |
| 108 proxy->EchoCandidateWindowEntry(input, &output); |
| 109 |
| 110 EXPECT_EQ(input.value, output.value); |
| 111 EXPECT_EQ(input.label, output.label); |
| 112 EXPECT_EQ(input.annotation, output.annotation); |
| 113 EXPECT_EQ(input.description_title, output.description_title); |
| 114 EXPECT_EQ(input.description_body, output.description_body); |
| 115 } |
| 116 |
| 51 TEST_F(IMEStructTraitsTest, CompositionText) { | 117 TEST_F(IMEStructTraitsTest, CompositionText) { |
| 52 CompositionText input; | 118 CompositionText input; |
| 53 input.text = base::UTF8ToUTF16("abcdefghij"); | 119 input.text = base::UTF8ToUTF16("abcdefghij"); |
| 54 input.underlines.push_back(CompositionUnderline(0, 2, SK_ColorGRAY, false)); | 120 input.underlines.push_back(CompositionUnderline(0, 2, SK_ColorGRAY, false)); |
| 55 input.underlines.push_back( | 121 input.underlines.push_back( |
| 56 CompositionUnderline(3, 6, SK_ColorRED, true, SK_ColorGREEN)); | 122 CompositionUnderline(3, 6, SK_ColorRED, true, SK_ColorGREEN)); |
| 57 input.selection = gfx::Range(1, 7); | 123 input.selection = gfx::Range(1, 7); |
| 58 | 124 |
| 59 mojom::IMEStructTraitsTestPtr proxy = GetTraitsTestProxy(); | 125 mojom::IMEStructTraitsTestPtr proxy = GetTraitsTestProxy(); |
| 60 CompositionText output; | 126 CompositionText output; |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 105 | 171 |
| 106 mojom::IMEStructTraitsTestPtr proxy = GetTraitsTestProxy(); | 172 mojom::IMEStructTraitsTestPtr proxy = GetTraitsTestProxy(); |
| 107 for (size_t i = 0; i < arraysize(kTextInputTypes); i++) { | 173 for (size_t i = 0; i < arraysize(kTextInputTypes); i++) { |
| 108 ui::TextInputType type_out; | 174 ui::TextInputType type_out; |
| 109 ASSERT_TRUE(proxy->EchoTextInputType(kTextInputTypes[i], &type_out)); | 175 ASSERT_TRUE(proxy->EchoTextInputType(kTextInputTypes[i], &type_out)); |
| 110 EXPECT_EQ(kTextInputTypes[i], type_out); | 176 EXPECT_EQ(kTextInputTypes[i], type_out); |
| 111 } | 177 } |
| 112 } | 178 } |
| 113 | 179 |
| 114 } // namespace ui | 180 } // namespace ui |
| OLD | NEW |