diff options
author | azurewei <azurewei@chromium.org> | 2015-11-05 21:41:25 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-11-06 05:42:11 +0000 |
commit | c593c13abc9e9280bc07c7cfce666b3763ac5842 (patch) | |
tree | beed3e15a45669dc83e3002c3316a370910457dc /ui | |
parent | 176b5f713052535874dec1290ac8fad0ba2b74d5 (diff) | |
download | chromium_src-c593c13abc9e9280bc07c7cfce666b3763ac5842.zip chromium_src-c593c13abc9e9280bc07c7cfce666b3763ac5842.tar.gz chromium_src-c593c13abc9e9280bc07c7cfce666b3763ac5842.tar.bz2 |
Merge duplicated CompositionText structures
Delete the duplicated class chromeos::CompositionText, using struct ui::CompositionText instead.
BUG=525893
TEST=No compiling erros.
Review URL: https://codereview.chromium.org/1427573006
Cr-Commit-Position: refs/heads/master@{#358267}
Diffstat (limited to 'ui')
-rw-r--r-- | ui/base/BUILD.gn | 2 | ||||
-rw-r--r-- | ui/base/ime/BUILD.gn | 2 | ||||
-rw-r--r-- | ui/base/ime/chromeos/composition_text_chromeos.cc | 22 | ||||
-rw-r--r-- | ui/base/ime/chromeos/composition_text_chromeos.h | 70 | ||||
-rw-r--r-- | ui/base/ime/chromeos/composition_text_chromeos_unittest.cc | 54 | ||||
-rw-r--r-- | ui/base/ime/chromeos/mock_ime_input_context_handler.cc | 4 | ||||
-rw-r--r-- | ui/base/ime/chromeos/mock_ime_input_context_handler.h | 6 | ||||
-rw-r--r-- | ui/base/ime/composition_text.cc | 9 | ||||
-rw-r--r-- | ui/base/ime/composition_text.h | 2 | ||||
-rw-r--r-- | ui/base/ime/composition_text_unittest.cc | 51 | ||||
-rw-r--r-- | ui/base/ime/ime_input_context_handler_interface.h | 7 | ||||
-rw-r--r-- | ui/base/ime/input_method_chromeos.cc | 58 | ||||
-rw-r--r-- | ui/base/ime/input_method_chromeos.h | 4 | ||||
-rw-r--r-- | ui/base/ime/input_method_chromeos_unittest.cc | 255 | ||||
-rw-r--r-- | ui/base/ime/ui_base_ime.gyp | 2 | ||||
-rw-r--r-- | ui/base/ui_base_tests.gyp | 2 |
16 files changed, 214 insertions, 336 deletions
diff --git a/ui/base/BUILD.gn b/ui/base/BUILD.gn index 31979ab..286aa74 100644 --- a/ui/base/BUILD.gn +++ b/ui/base/BUILD.gn @@ -737,8 +737,8 @@ test("ui_base_unittests") { if (build_ime) { sources += [ "ime/candidate_window_unittest.cc", + "ime/composition_text_unittest.cc", "ime/chromeos/character_composer_unittest.cc", - "ime/chromeos/composition_text_chromeos_unittest.cc", "ime/input_method_base_unittest.cc", "ime/input_method_chromeos_unittest.cc", "ime/remote_input_method_win_unittest.cc", diff --git a/ui/base/ime/BUILD.gn b/ui/base/ime/BUILD.gn index 79c8ffb..78f9c55 100644 --- a/ui/base/ime/BUILD.gn +++ b/ui/base/ime/BUILD.gn @@ -14,8 +14,6 @@ component("ime") { "chromeos/character_composer.h", "chromeos/component_extension_ime_manager.cc", "chromeos/component_extension_ime_manager.h", - "chromeos/composition_text_chromeos.cc", - "chromeos/composition_text_chromeos.h", "chromeos/extension_ime_util.cc", "chromeos/extension_ime_util.h", "chromeos/fake_ime_keyboard.cc", diff --git a/ui/base/ime/chromeos/composition_text_chromeos.cc b/ui/base/ime/chromeos/composition_text_chromeos.cc deleted file mode 100644 index 905d8ea..0000000 --- a/ui/base/ime/chromeos/composition_text_chromeos.cc +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ui/base/ime/chromeos/composition_text_chromeos.h" - -namespace chromeos { - -CompositionText::CompositionText() - : selection_start_(0), - selection_end_(0) {} - -CompositionText::~CompositionText() {} - -void CompositionText::CopyFrom(const CompositionText& obj) { - text_ = obj.text(); - underline_attributes_ = obj.underline_attributes(); - selection_start_ = obj.selection_start(); - selection_end_ = obj.selection_end(); -} - -} // namespace chromeos diff --git a/ui/base/ime/chromeos/composition_text_chromeos.h b/ui/base/ime/chromeos/composition_text_chromeos.h deleted file mode 100644 index 3350b0e..0000000 --- a/ui/base/ime/chromeos/composition_text_chromeos.h +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef UI_BASE_IME_CHROMEOS_COMPOSITION_TEXT_CHROMEOS_H_ -#define UI_BASE_IME_CHROMEOS_COMPOSITION_TEXT_CHROMEOS_H_ - -#include <string> -#include <vector> - -#include "base/basictypes.h" -#include "base/strings/string16.h" -#include "ui/base/ime/ui_base_ime_export.h" - -namespace chromeos { - -class UI_BASE_IME_EXPORT CompositionText { - public: - enum UnderlineType { - COMPOSITION_TEXT_UNDERLINE_SINGLE = 1, - COMPOSITION_TEXT_UNDERLINE_DOUBLE = 2, - COMPOSITION_TEXT_UNDERLINE_NONE = 4, - COMPOSITION_TEXT_UNDERLINE_ERROR = 8, - }; - - struct UnderlineAttribute { - UnderlineType type; - uint32 start_index; // The inclusive start index. - uint32 end_index; // The exclusive end index. - }; - - CompositionText(); - virtual ~CompositionText(); - - // Accessors - const base::string16& text() const { return text_; } - void set_text(const base::string16& text) { text_ = text; } - - const std::vector<UnderlineAttribute>& underline_attributes() const { - return underline_attributes_; - } - - std::vector<UnderlineAttribute>* mutable_underline_attributes() { - return &underline_attributes_; - } - - uint32 selection_start() const { return selection_start_; } - void set_selection_start(uint32 selection_start) { - selection_start_ = selection_start; - } - - uint32 selection_end() const { return selection_end_; } - void set_selection_end(uint32 selection_end) { - selection_end_ = selection_end; - } - - void CopyFrom(const CompositionText& obj); - - private: - base::string16 text_; - std::vector<UnderlineAttribute> underline_attributes_; - uint32 selection_start_; - uint32 selection_end_; - - DISALLOW_COPY_AND_ASSIGN(CompositionText); -}; - -} // namespace chromeos - -#endif // UI_BASE_IME_CHROMEOS_COMPOSITION_TEXT_CHROMEOS_H_ diff --git a/ui/base/ime/chromeos/composition_text_chromeos_unittest.cc b/ui/base/ime/chromeos/composition_text_chromeos_unittest.cc deleted file mode 100644 index 067681e..0000000 --- a/ui/base/ime/chromeos/composition_text_chromeos_unittest.cc +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// TODO(nona): Add more tests. - -#include "ui/base/ime/chromeos/composition_text_chromeos.h" - -#include "base/strings/utf_string_conversions.h" -#include "testing/gtest/include/gtest/gtest.h" - -namespace chromeos { - -TEST(CompositionTextTest, CopyTest) { - const base::string16 kSampleText = base::UTF8ToUTF16("Sample Text"); - const CompositionText::UnderlineAttribute kSampleUnderlineAttribute1 = { - CompositionText::COMPOSITION_TEXT_UNDERLINE_SINGLE, 10, 20}; - - const CompositionText::UnderlineAttribute kSampleUnderlineAttribute2 = { - CompositionText::COMPOSITION_TEXT_UNDERLINE_DOUBLE, 11, 21}; - - const CompositionText::UnderlineAttribute kSampleUnderlineAttribute3 = { - CompositionText::COMPOSITION_TEXT_UNDERLINE_ERROR, 12, 22}; - - // Make CompositionText - CompositionText text; - text.set_text(kSampleText); - std::vector<CompositionText::UnderlineAttribute>* underline_attributes = - text.mutable_underline_attributes(); - underline_attributes->push_back(kSampleUnderlineAttribute1); - underline_attributes->push_back(kSampleUnderlineAttribute2); - underline_attributes->push_back(kSampleUnderlineAttribute3); - text.set_selection_start(30); - text.set_selection_end(40); - - CompositionText text2; - text2.CopyFrom(text); - - EXPECT_EQ(text.text(), text2.text()); - EXPECT_EQ(text.underline_attributes().size(), - text2.underline_attributes().size()); - for (size_t i = 0; i < text.underline_attributes().size(); ++i) { - EXPECT_EQ(text.underline_attributes()[i].type, - text2.underline_attributes()[i].type); - EXPECT_EQ(text.underline_attributes()[i].start_index, - text2.underline_attributes()[i].start_index); - EXPECT_EQ(text.underline_attributes()[i].end_index, - text2.underline_attributes()[i].end_index); - } - - EXPECT_EQ(text.selection_start(), text2.selection_start()); - EXPECT_EQ(text.selection_end(), text2.selection_end()); -} - -} // namespace chromeos diff --git a/ui/base/ime/chromeos/mock_ime_input_context_handler.cc b/ui/base/ime/chromeos/mock_ime_input_context_handler.cc index 936caf2..c139e70 100644 --- a/ui/base/ime/chromeos/mock_ime_input_context_handler.cc +++ b/ui/base/ime/chromeos/mock_ime_input_context_handler.cc @@ -4,7 +4,7 @@ #include "ui/base/ime/chromeos/mock_ime_input_context_handler.h" -#include "ui/base/ime/chromeos/composition_text_chromeos.h" +#include "ui/base/ime/composition_text.h" namespace chromeos { @@ -23,7 +23,7 @@ void MockIMEInputContextHandler::CommitText(const std::string& text) { } void MockIMEInputContextHandler::UpdateCompositionText( - const CompositionText& text, + const ui::CompositionText& text, uint32 cursor_pos, bool visible) { ++update_preedit_text_call_count_; diff --git a/ui/base/ime/chromeos/mock_ime_input_context_handler.h b/ui/base/ime/chromeos/mock_ime_input_context_handler.h index ceb8b8f..21fa313 100644 --- a/ui/base/ime/chromeos/mock_ime_input_context_handler.h +++ b/ui/base/ime/chromeos/mock_ime_input_context_handler.h @@ -5,7 +5,7 @@ #ifndef UI_BASE_IME_CHROMEOS_MOCK_IME_INPUT_CONTEXT_HANDLER_H_ #define UI_BASE_IME_CHROMEOS_MOCK_IME_INPUT_CONTEXT_HANDLER_H_ -#include "ui/base/ime/chromeos/composition_text_chromeos.h" +#include "ui/base/ime/composition_text.h" #include "ui/base/ime/ime_input_context_handler_interface.h" #include "ui/base/ime/ui_base_ime_export.h" @@ -15,7 +15,7 @@ class UI_BASE_IME_EXPORT MockIMEInputContextHandler : public ui::IMEInputContextHandlerInterface { public: struct UpdateCompositionTextArg { - CompositionText composition_text; + ui::CompositionText composition_text; uint32 cursor_pos; bool is_visible; }; @@ -29,7 +29,7 @@ class UI_BASE_IME_EXPORT MockIMEInputContextHandler virtual ~MockIMEInputContextHandler(); void CommitText(const std::string& text) override; - void UpdateCompositionText(const CompositionText& text, + void UpdateCompositionText(const ui::CompositionText& text, uint32 cursor_pos, bool visible) override; void DeleteSurroundingText(int32 offset, uint32 length) override; diff --git a/ui/base/ime/composition_text.cc b/ui/base/ime/composition_text.cc index f85bc74..d3ae7f3 100644 --- a/ui/base/ime/composition_text.cc +++ b/ui/base/ime/composition_text.cc @@ -18,4 +18,13 @@ void CompositionText::Clear() { selection = gfx::Range(); } +void CompositionText::CopyFrom(const CompositionText& obj) { + Clear(); + text = obj.text; + for (size_t i = 0; i < obj.underlines.size(); i++) { + underlines.push_back(obj.underlines[i]); + } + selection = obj.selection; +} + } // namespace ui diff --git a/ui/base/ime/composition_text.h b/ui/base/ime/composition_text.h index 063592e..f5b1e37 100644 --- a/ui/base/ime/composition_text.h +++ b/ui/base/ime/composition_text.h @@ -35,6 +35,8 @@ struct UI_BASE_IME_EXPORT CompositionText { void Clear(); + void CopyFrom(const CompositionText& obj); + // Content of the composition text. base::string16 text; diff --git a/ui/base/ime/composition_text_unittest.cc b/ui/base/ime/composition_text_unittest.cc new file mode 100644 index 0000000..d7ed2b8 --- /dev/null +++ b/ui/base/ime/composition_text_unittest.cc @@ -0,0 +1,51 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ui/base/ime/composition_text.h" + +#include "base/strings/utf_string_conversions.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace ui { + +TEST(CompositionTextTest, CopyTest) { + const base::string16 kSampleText = base::UTF8ToUTF16("Sample Text"); + const CompositionUnderline kSampleUnderline1(10, 20, SK_ColorBLACK, false, + SK_ColorTRANSPARENT); + + const CompositionUnderline kSampleUnderline2(11, 21, SK_ColorBLACK, true, + SK_ColorTRANSPARENT); + + const CompositionUnderline kSampleUnderline3(12, 22, SK_ColorRED, false, + SK_ColorTRANSPARENT); + + // Make CompositionText + CompositionText text; + text.text = kSampleText; + text.underlines.push_back(kSampleUnderline1); + text.underlines.push_back(kSampleUnderline2); + text.underlines.push_back(kSampleUnderline3); + text.selection.set_start(30); + text.selection.set_end(40); + + CompositionText text2; + text2.CopyFrom(text); + + EXPECT_EQ(text.text, text2.text); + EXPECT_EQ(text.underlines.size(), text2.underlines.size()); + for (size_t i = 0; i < text.underlines.size(); ++i) { + EXPECT_EQ(text.underlines[i].start_offset, + text2.underlines[i].start_offset); + EXPECT_EQ(text.underlines[i].end_offset, text2.underlines[i].end_offset); + EXPECT_EQ(text.underlines[i].color, text2.underlines[i].color); + EXPECT_EQ(text.underlines[i].thick, text2.underlines[i].thick); + EXPECT_EQ(text.underlines[i].background_color, + text2.underlines[i].background_color); + } + + EXPECT_EQ(text.selection.start(), text2.selection.start()); + EXPECT_EQ(text.selection.end(), text2.selection.end()); +} + +} // namespace ui diff --git a/ui/base/ime/ime_input_context_handler_interface.h b/ui/base/ime/ime_input_context_handler_interface.h index efb0fbe..f5520f5 100644 --- a/ui/base/ime/ime_input_context_handler_interface.h +++ b/ui/base/ime/ime_input_context_handler_interface.h @@ -7,12 +7,9 @@ #include <string> #include "base/basictypes.h" +#include "ui/base/ime/composition_text.h" #include "ui/base/ime/ui_base_ime_export.h" -namespace chromeos { -class CompositionText; -} - namespace ui { class UI_BASE_IME_EXPORT IMEInputContextHandlerInterface { @@ -21,7 +18,7 @@ class UI_BASE_IME_EXPORT IMEInputContextHandlerInterface { virtual void CommitText(const std::string& text) = 0; // Called when the engine updates composition text. - virtual void UpdateCompositionText(const chromeos::CompositionText& text, + virtual void UpdateCompositionText(const CompositionText& text, uint32 cursor_pos, bool visible) = 0; diff --git a/ui/base/ime/input_method_chromeos.cc b/ui/base/ime/input_method_chromeos.cc index 96ff2ad..f5b2bc2 100644 --- a/ui/base/ime/input_method_chromeos.cc +++ b/ui/base/ime/input_method_chromeos.cc @@ -17,9 +17,9 @@ #include "base/strings/utf_string_conversions.h" #include "base/sys_info.h" #include "base/third_party/icu/icu_utf.h" -#include "ui/base/ime/chromeos/composition_text_chromeos.h" #include "ui/base/ime/chromeos/ime_keyboard.h" #include "ui/base/ime/chromeos/input_method_manager.h" +#include "ui/base/ime/composition_text.h" #include "ui/base/ime/ime_bridge.h" #include "ui/base/ime/ime_engine_handler_interface.h" #include "ui/base/ime/text_input_client.h" @@ -499,10 +499,9 @@ void InputMethodChromeOS::CommitText(const std::string& text) { } } -void InputMethodChromeOS::UpdateCompositionText( - const chromeos::CompositionText& text, - uint32 cursor_pos, - bool visible) { +void InputMethodChromeOS::UpdateCompositionText(const CompositionText& text, + uint32 cursor_pos, + bool visible) { if (IsTextInputTypeNone()) return; @@ -510,7 +509,7 @@ void InputMethodChromeOS::UpdateCompositionText( chromeos::IMECandidateWindowHandlerInterface* candidate_window = ui::IMEBridge::Get()->GetCandidateWindowHandler(); if (candidate_window) - candidate_window->UpdatePreeditText(text.text(), cursor_pos, visible); + candidate_window->UpdatePreeditText(text.text, cursor_pos, visible); } // |visible| argument is very confusing. For example, what's the correct @@ -578,10 +577,9 @@ bool InputMethodChromeOS::ExecuteCharacterComposer(const ui::KeyEvent& event) { return false; // CharacterComposer consumed the key event. Update the composition text. - chromeos::CompositionText preedit; - preedit.set_text(character_composer_.preedit_string()); - UpdateCompositionText(preedit, preedit.text().size(), - !preedit.text().empty()); + CompositionText preedit; + preedit.text = character_composer_.preedit_string(); + UpdateCompositionText(preedit, preedit.text.size(), !preedit.text.empty()); std::string commit_text = base::UTF16ToUTF8(character_composer_.composed_character()); if (!commit_text.empty()) { @@ -591,11 +589,11 @@ bool InputMethodChromeOS::ExecuteCharacterComposer(const ui::KeyEvent& event) { } void InputMethodChromeOS::ExtractCompositionText( - const chromeos::CompositionText& text, + const CompositionText& text, uint32 cursor_position, CompositionText* out_composition) const { out_composition->Clear(); - out_composition->text = text.text(); + out_composition->text = text.text; if (out_composition->text.empty()) return; @@ -619,36 +617,24 @@ void InputMethodChromeOS::ExtractCompositionText( out_composition->selection = gfx::Range(cursor_offset); - const std::vector<chromeos::CompositionText::UnderlineAttribute>& - underline_attributes = text.underline_attributes(); - if (!underline_attributes.empty()) { - for (size_t i = 0; i < underline_attributes.size(); ++i) { - const uint32 start = underline_attributes[i].start_index; - const uint32 end = underline_attributes[i].end_index; + const CompositionUnderlines text_underlines = text.underlines; + if (!text_underlines.empty()) { + for (size_t i = 0; i < text_underlines.size(); ++i) { + const uint32 start = text_underlines[i].start_offset; + const uint32 end = text_underlines[i].end_offset; if (start >= end) continue; - CompositionUnderline underline(char16_offsets[start], - char16_offsets[end], - SK_ColorBLACK, - false /* thick */, - SK_ColorTRANSPARENT); - if (underline_attributes[i].type == - chromeos::CompositionText::COMPOSITION_TEXT_UNDERLINE_DOUBLE) - underline.thick = true; - else if (underline_attributes[i].type == - chromeos::CompositionText::COMPOSITION_TEXT_UNDERLINE_ERROR) - underline.color = SK_ColorRED; - else if (underline_attributes[i].type == - chromeos::CompositionText::COMPOSITION_TEXT_UNDERLINE_NONE) - underline.color = SK_ColorTRANSPARENT; + CompositionUnderline underline( + char16_offsets[start], char16_offsets[end], text_underlines[i].color, + text_underlines[i].thick, text_underlines[i].background_color); out_composition->underlines.push_back(underline); } } - DCHECK(text.selection_start() <= text.selection_end()); - if (text.selection_start() < text.selection_end()) { - const uint32 start = text.selection_start(); - const uint32 end = text.selection_end(); + DCHECK(text.selection.start() <= text.selection.end()); + if (text.selection.start() < text.selection.end()) { + const uint32 start = text.selection.start(); + const uint32 end = text.selection.end(); CompositionUnderline underline(char16_offsets[start], char16_offsets[end], SK_ColorBLACK, diff --git a/ui/base/ime/input_method_chromeos.h b/ui/base/ime/input_method_chromeos.h index fa84579..13cbdf9 100644 --- a/ui/base/ime/input_method_chromeos.h +++ b/ui/base/ime/input_method_chromeos.h @@ -42,7 +42,7 @@ class UI_BASE_IME_EXPORT InputMethodChromeOS protected: // Converts |text| into CompositionText. - void ExtractCompositionText(const chromeos::CompositionText& text, + void ExtractCompositionText(const CompositionText& text, uint32 cursor_position, CompositionText* out_composition) const; @@ -99,7 +99,7 @@ class UI_BASE_IME_EXPORT InputMethodChromeOS // ui::IMEInputContextHandlerInterface overrides: void CommitText(const std::string& text) override; - void UpdateCompositionText(const chromeos::CompositionText& text, + void UpdateCompositionText(const CompositionText& text, uint32 cursor_pos, bool visible) override; void DeleteSurroundingText(int32 offset, uint32 length) override; diff --git a/ui/base/ime/input_method_chromeos_unittest.cc b/ui/base/ime/input_method_chromeos_unittest.cc index b9af8c1..b35a083 100644 --- a/ui/base/ime/input_method_chromeos_unittest.cc +++ b/ui/base/ime/input_method_chromeos_unittest.cc @@ -16,9 +16,9 @@ #include "base/memory/scoped_ptr.h" #include "base/strings/utf_string_conversions.h" #include "testing/gtest/include/gtest/gtest.h" -#include "ui/base/ime/chromeos/composition_text_chromeos.h" #include "ui/base/ime/chromeos/mock_ime_candidate_window_handler.h" #include "ui/base/ime/chromeos/mock_ime_engine_handler.h" +#include "ui/base/ime/composition_text.h" #include "ui/base/ime/dummy_text_input_client.h" #include "ui/base/ime/ime_bridge.h" #include "ui/base/ime/ime_engine_handler_interface.h" @@ -553,8 +553,8 @@ TEST_F(InputMethodChromeOSTest, ExtractCompositionTextTest_NoAttribute) { const base::string16 kSampleAsciiText = UTF8ToUTF16("Sample Text"); const uint32 kCursorPos = 2UL; - chromeos::CompositionText chromeos_composition_text; - chromeos_composition_text.set_text(kSampleAsciiText); + CompositionText chromeos_composition_text; + chromeos_composition_text.text = kSampleAsciiText; CompositionText composition_text; ime_->ExtractCompositionText( @@ -575,121 +575,110 @@ TEST_F(InputMethodChromeOSTest, ExtractCompositionTextTest_SingleUnderline) { const uint32 kCursorPos = 2UL; // Set up chromeos composition text with one underline attribute. - chromeos::CompositionText chromeos_composition_text; - chromeos_composition_text.set_text(kSampleText); - chromeos::CompositionText::UnderlineAttribute underline; - underline.type = chromeos::CompositionText::COMPOSITION_TEXT_UNDERLINE_SINGLE; - underline.start_index = 1UL; - underline.end_index = 4UL; - chromeos_composition_text.mutable_underline_attributes()->push_back( - underline); - CompositionText composition_text; - ime_->ExtractCompositionText( - chromeos_composition_text, kCursorPos, &composition_text); - EXPECT_EQ(kSampleText, composition_text.text); + composition_text.text = kSampleText; + CompositionUnderline underline(1UL, 4UL, SK_ColorBLACK, false, + SK_ColorTRANSPARENT); + composition_text.underlines.push_back(underline); + + CompositionText composition_text2; + ime_->ExtractCompositionText(composition_text, kCursorPos, + &composition_text2); + EXPECT_EQ(kSampleText, composition_text2.text); // If there is no selection, |selection| represents cursor position. - EXPECT_EQ(kCursorPos, composition_text.selection.start()); - EXPECT_EQ(kCursorPos, composition_text.selection.end()); - ASSERT_EQ(1UL, composition_text.underlines.size()); - EXPECT_EQ(GetOffsetInUTF16(kSampleText, underline.start_index), - composition_text.underlines[0].start_offset); - EXPECT_EQ(GetOffsetInUTF16(kSampleText, underline.end_index), - composition_text.underlines[0].end_offset); + EXPECT_EQ(kCursorPos, composition_text2.selection.start()); + EXPECT_EQ(kCursorPos, composition_text2.selection.end()); + ASSERT_EQ(1UL, composition_text2.underlines.size()); + EXPECT_EQ(GetOffsetInUTF16(kSampleText, underline.start_offset), + composition_text2.underlines[0].start_offset); + EXPECT_EQ(GetOffsetInUTF16(kSampleText, underline.end_offset), + composition_text2.underlines[0].end_offset); // Single underline represents as black thin line. - EXPECT_EQ(SK_ColorBLACK, composition_text.underlines[0].color); - EXPECT_FALSE(composition_text.underlines[0].thick); + EXPECT_EQ(SK_ColorBLACK, composition_text2.underlines[0].color); + EXPECT_FALSE(composition_text2.underlines[0].thick); EXPECT_EQ(static_cast<SkColor>(SK_ColorTRANSPARENT), - composition_text.underlines[0].background_color); + composition_text2.underlines[0].background_color); } TEST_F(InputMethodChromeOSTest, ExtractCompositionTextTest_DoubleUnderline) { const uint32 kCursorPos = 2UL; // Set up chromeos composition text with one underline attribute. - chromeos::CompositionText chromeos_composition_text; - chromeos_composition_text.set_text(kSampleText); - chromeos::CompositionText::UnderlineAttribute underline; - underline.type = chromeos::CompositionText::COMPOSITION_TEXT_UNDERLINE_DOUBLE; - underline.start_index = 1UL; - underline.end_index = 4UL; - chromeos_composition_text.mutable_underline_attributes()->push_back( - underline); - CompositionText composition_text; - ime_->ExtractCompositionText( - chromeos_composition_text, kCursorPos, &composition_text); - EXPECT_EQ(kSampleText, composition_text.text); + composition_text.text = kSampleText; + CompositionUnderline underline(1UL, 4UL, SK_ColorBLACK, true, + SK_ColorTRANSPARENT); + composition_text.underlines.push_back(underline); + + CompositionText composition_text2; + ime_->ExtractCompositionText(composition_text, kCursorPos, + &composition_text2); + EXPECT_EQ(kSampleText, composition_text2.text); // If there is no selection, |selection| represents cursor position. - EXPECT_EQ(kCursorPos, composition_text.selection.start()); - EXPECT_EQ(kCursorPos, composition_text.selection.end()); - ASSERT_EQ(1UL, composition_text.underlines.size()); - EXPECT_EQ(GetOffsetInUTF16(kSampleText, underline.start_index), - composition_text.underlines[0].start_offset); - EXPECT_EQ(GetOffsetInUTF16(kSampleText, underline.end_index), - composition_text.underlines[0].end_offset); + EXPECT_EQ(kCursorPos, composition_text2.selection.start()); + EXPECT_EQ(kCursorPos, composition_text2.selection.end()); + ASSERT_EQ(1UL, composition_text2.underlines.size()); + EXPECT_EQ(GetOffsetInUTF16(kSampleText, underline.start_offset), + composition_text2.underlines[0].start_offset); + EXPECT_EQ(GetOffsetInUTF16(kSampleText, underline.end_offset), + composition_text2.underlines[0].end_offset); // Double underline represents as black thick line. - EXPECT_EQ(SK_ColorBLACK, composition_text.underlines[0].color); - EXPECT_TRUE(composition_text.underlines[0].thick); + EXPECT_EQ(SK_ColorBLACK, composition_text2.underlines[0].color); + EXPECT_TRUE(composition_text2.underlines[0].thick); EXPECT_EQ(static_cast<SkColor>(SK_ColorTRANSPARENT), - composition_text.underlines[0].background_color); + composition_text2.underlines[0].background_color); } TEST_F(InputMethodChromeOSTest, ExtractCompositionTextTest_ErrorUnderline) { const uint32 kCursorPos = 2UL; // Set up chromeos composition text with one underline attribute. - chromeos::CompositionText chromeos_composition_text; - chromeos_composition_text.set_text(kSampleText); - chromeos::CompositionText::UnderlineAttribute underline; - underline.type = chromeos::CompositionText::COMPOSITION_TEXT_UNDERLINE_ERROR; - underline.start_index = 1UL; - underline.end_index = 4UL; - chromeos_composition_text.mutable_underline_attributes()->push_back( - underline); - CompositionText composition_text; - ime_->ExtractCompositionText( - chromeos_composition_text, kCursorPos, &composition_text); - EXPECT_EQ(kSampleText, composition_text.text); - EXPECT_EQ(kCursorPos, composition_text.selection.start()); - EXPECT_EQ(kCursorPos, composition_text.selection.end()); - ASSERT_EQ(1UL, composition_text.underlines.size()); - EXPECT_EQ(GetOffsetInUTF16(kSampleText, underline.start_index), - composition_text.underlines[0].start_offset); - EXPECT_EQ(GetOffsetInUTF16(kSampleText, underline.end_index), - composition_text.underlines[0].end_offset); + composition_text.text = kSampleText; + CompositionUnderline underline(1UL, 4UL, SK_ColorRED, false, + SK_ColorTRANSPARENT); + composition_text.underlines.push_back(underline); + + CompositionText composition_text2; + ime_->ExtractCompositionText(composition_text, kCursorPos, + &composition_text2); + EXPECT_EQ(kSampleText, composition_text2.text); + EXPECT_EQ(kCursorPos, composition_text2.selection.start()); + EXPECT_EQ(kCursorPos, composition_text2.selection.end()); + ASSERT_EQ(1UL, composition_text2.underlines.size()); + EXPECT_EQ(GetOffsetInUTF16(kSampleText, underline.start_offset), + composition_text2.underlines[0].start_offset); + EXPECT_EQ(GetOffsetInUTF16(kSampleText, underline.end_offset), + composition_text2.underlines[0].end_offset); // Error underline represents as red thin line. - EXPECT_EQ(SK_ColorRED, composition_text.underlines[0].color); - EXPECT_FALSE(composition_text.underlines[0].thick); + EXPECT_EQ(SK_ColorRED, composition_text2.underlines[0].color); + EXPECT_FALSE(composition_text2.underlines[0].thick); } TEST_F(InputMethodChromeOSTest, ExtractCompositionTextTest_Selection) { const uint32 kCursorPos = 2UL; // Set up chromeos composition text with one underline attribute. - chromeos::CompositionText chromeos_composition_text; - chromeos_composition_text.set_text(kSampleText); - chromeos_composition_text.set_selection_start(1UL); - chromeos_composition_text.set_selection_end(4UL); - CompositionText composition_text; - ime_->ExtractCompositionText( - chromeos_composition_text, kCursorPos, &composition_text); - EXPECT_EQ(kSampleText, composition_text.text); - EXPECT_EQ(kCursorPos, composition_text.selection.start()); - EXPECT_EQ(kCursorPos, composition_text.selection.end()); - ASSERT_EQ(1UL, composition_text.underlines.size()); - EXPECT_EQ(GetOffsetInUTF16(kSampleText, - chromeos_composition_text.selection_start()), - composition_text.underlines[0].start_offset); - EXPECT_EQ(GetOffsetInUTF16(kSampleText, - chromeos_composition_text.selection_end()), - composition_text.underlines[0].end_offset); - EXPECT_EQ(SK_ColorBLACK, composition_text.underlines[0].color); - EXPECT_TRUE(composition_text.underlines[0].thick); + composition_text.text = kSampleText; + composition_text.selection.set_start(1UL); + composition_text.selection.set_end(4UL); + + CompositionText composition_text2; + ime_->ExtractCompositionText(composition_text, kCursorPos, + &composition_text2); + EXPECT_EQ(kSampleText, composition_text2.text); + EXPECT_EQ(kCursorPos, composition_text2.selection.start()); + EXPECT_EQ(kCursorPos, composition_text2.selection.end()); + ASSERT_EQ(1UL, composition_text2.underlines.size()); + EXPECT_EQ(GetOffsetInUTF16(kSampleText, composition_text.selection.start()), + composition_text2.underlines[0].start_offset); + EXPECT_EQ(GetOffsetInUTF16(kSampleText, composition_text.selection.end()), + composition_text2.underlines[0].end_offset); + EXPECT_EQ(SK_ColorBLACK, composition_text2.underlines[0].color); + EXPECT_TRUE(composition_text2.underlines[0].thick); EXPECT_EQ(static_cast<SkColor>(SK_ColorTRANSPARENT), - composition_text.underlines[0].background_color); + composition_text2.underlines[0].background_color); } TEST_F(InputMethodChromeOSTest, @@ -697,33 +686,30 @@ TEST_F(InputMethodChromeOSTest, const uint32 kCursorPos = 1UL; // Set up chromeos composition text with one underline attribute. - chromeos::CompositionText chromeos_composition_text; - chromeos_composition_text.set_text(kSampleText); - chromeos_composition_text.set_selection_start(kCursorPos); - chromeos_composition_text.set_selection_end(4UL); - CompositionText composition_text; - ime_->ExtractCompositionText( - chromeos_composition_text, kCursorPos, &composition_text); - EXPECT_EQ(kSampleText, composition_text.text); + composition_text.text = kSampleText; + composition_text.selection.set_start(kCursorPos); + composition_text.selection.set_end(4UL); + + CompositionText composition_text2; + ime_->ExtractCompositionText(composition_text, kCursorPos, + &composition_text2); + EXPECT_EQ(kSampleText, composition_text2.text); // If the cursor position is same as selection bounds, selection start // position become opposit side of selection from cursor. - EXPECT_EQ(GetOffsetInUTF16(kSampleText, - chromeos_composition_text.selection_end()), - composition_text.selection.start()); + EXPECT_EQ(GetOffsetInUTF16(kSampleText, composition_text.selection.end()), + composition_text2.selection.start()); EXPECT_EQ(GetOffsetInUTF16(kSampleText, kCursorPos), - composition_text.selection.end()); - ASSERT_EQ(1UL, composition_text.underlines.size()); - EXPECT_EQ(GetOffsetInUTF16(kSampleText, - chromeos_composition_text.selection_start()), - composition_text.underlines[0].start_offset); - EXPECT_EQ(GetOffsetInUTF16(kSampleText, - chromeos_composition_text.selection_end()), - composition_text.underlines[0].end_offset); - EXPECT_EQ(SK_ColorBLACK, composition_text.underlines[0].color); - EXPECT_TRUE(composition_text.underlines[0].thick); + composition_text2.selection.end()); + ASSERT_EQ(1UL, composition_text2.underlines.size()); + EXPECT_EQ(GetOffsetInUTF16(kSampleText, composition_text.selection.start()), + composition_text2.underlines[0].start_offset); + EXPECT_EQ(GetOffsetInUTF16(kSampleText, composition_text.selection.end()), + composition_text2.underlines[0].end_offset); + EXPECT_EQ(SK_ColorBLACK, composition_text2.underlines[0].color); + EXPECT_TRUE(composition_text2.underlines[0].thick); EXPECT_EQ(static_cast<SkColor>(SK_ColorTRANSPARENT), - composition_text.underlines[0].background_color); + composition_text2.underlines[0].background_color); } TEST_F(InputMethodChromeOSTest, @@ -731,33 +717,30 @@ TEST_F(InputMethodChromeOSTest, const uint32 kCursorPos = 4UL; // Set up chromeos composition text with one underline attribute. - chromeos::CompositionText chromeos_composition_text; - chromeos_composition_text.set_text(kSampleText); - chromeos_composition_text.set_selection_start(1UL); - chromeos_composition_text.set_selection_end(kCursorPos); - CompositionText composition_text; - ime_->ExtractCompositionText( - chromeos_composition_text, kCursorPos, &composition_text); - EXPECT_EQ(kSampleText, composition_text.text); + composition_text.text = kSampleText; + composition_text.selection.set_start(1UL); + composition_text.selection.set_end(kCursorPos); + + CompositionText composition_text2; + ime_->ExtractCompositionText(composition_text, kCursorPos, + &composition_text2); + EXPECT_EQ(kSampleText, composition_text2.text); // If the cursor position is same as selection bounds, selection start // position become opposit side of selection from cursor. - EXPECT_EQ(GetOffsetInUTF16(kSampleText, - chromeos_composition_text.selection_start()), - composition_text.selection.start()); + EXPECT_EQ(GetOffsetInUTF16(kSampleText, composition_text.selection.start()), + composition_text2.selection.start()); EXPECT_EQ(GetOffsetInUTF16(kSampleText, kCursorPos), - composition_text.selection.end()); - ASSERT_EQ(1UL, composition_text.underlines.size()); - EXPECT_EQ(GetOffsetInUTF16(kSampleText, - chromeos_composition_text.selection_start()), - composition_text.underlines[0].start_offset); - EXPECT_EQ(GetOffsetInUTF16(kSampleText, - chromeos_composition_text.selection_end()), - composition_text.underlines[0].end_offset); - EXPECT_EQ(SK_ColorBLACK, composition_text.underlines[0].color); - EXPECT_TRUE(composition_text.underlines[0].thick); + composition_text2.selection.end()); + ASSERT_EQ(1UL, composition_text2.underlines.size()); + EXPECT_EQ(GetOffsetInUTF16(kSampleText, composition_text.selection.start()), + composition_text2.underlines[0].start_offset); + EXPECT_EQ(GetOffsetInUTF16(kSampleText, composition_text.selection.end()), + composition_text2.underlines[0].end_offset); + EXPECT_EQ(SK_ColorBLACK, composition_text2.underlines[0].color); + EXPECT_TRUE(composition_text2.underlines[0].thick); EXPECT_EQ(static_cast<SkColor>(SK_ColorTRANSPARENT), - composition_text.underlines[0].background_color); + composition_text2.underlines[0].background_color); } TEST_F(InputMethodChromeOSTest, SurroundingText_NoSelectionTest) { @@ -947,17 +930,17 @@ TEST_F(InputMethodChromeOSKeyEventTest, MultiKeyEventDelayResponseTest) { mock_ime_engine_handler_->process_key_event_call_count()); EXPECT_EQ(0, ime_->process_key_event_post_ime_call_count()); - chromeos::CompositionText comp; - comp.set_text(base::ASCIIToUTF16("B")); + CompositionText comp; + comp.text = base::ASCIIToUTF16("B"); (static_cast<IMEInputContextHandlerInterface*>(ime_.get())) - ->UpdateCompositionText(comp, comp.text().length(), true); + ->UpdateCompositionText(comp, comp.text.length(), true); EXPECT_EQ(0, composition_text_.text[0]); // Do callback for first key event. first_callback.Run(true); - EXPECT_EQ(comp.text(), composition_text_.text); + EXPECT_EQ(comp.text, composition_text_.text); // Check the results for first key event. EXPECT_EQ(1, ime_->process_key_event_post_ime_call_count()); diff --git a/ui/base/ime/ui_base_ime.gyp b/ui/base/ime/ui_base_ime.gyp index 7e2a66c..3b5b137 100644 --- a/ui/base/ime/ui_base_ime.gyp +++ b/ui/base/ime/ui_base_ime.gyp @@ -36,8 +36,6 @@ 'chromeos/character_composer.h', 'chromeos/component_extension_ime_manager.cc', 'chromeos/component_extension_ime_manager.h', - 'chromeos/composition_text_chromeos.cc', - 'chromeos/composition_text_chromeos.h', 'chromeos/extension_ime_util.cc', 'chromeos/extension_ime_util.h', 'chromeos/fake_ime_keyboard.cc', diff --git a/ui/base/ui_base_tests.gyp b/ui/base/ui_base_tests.gyp index 5018384..2c2ec55 100644 --- a/ui/base/ui_base_tests.gyp +++ b/ui/base/ui_base_tests.gyp @@ -71,8 +71,8 @@ 'cocoa/tracking_area_unittest.mm', 'dragdrop/os_exchange_data_provider_aurax11_unittest.cc', 'ime/candidate_window_unittest.cc', + 'ime/composition_text_unittest.cc', 'ime/chromeos/character_composer_unittest.cc', - 'ime/chromeos/composition_text_chromeos_unittest.cc', 'ime/composition_text_util_pango_unittest.cc', 'ime/input_method_base_unittest.cc', 'ime/input_method_chromeos_unittest.cc', |