1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef UI_VIEWS_IME_MOCK_INPUT_METHOD_H_ 6 #define UI_VIEWS_IME_MOCK_INPUT_METHOD_H_ 7 8 #include <string> 9 10 #include "base/basictypes.h" 11 #include "base/compiler_specific.h" 12 #include "ui/base/ime/composition_text.h" 13 #include "ui/views/ime/input_method_base.h" 14 #include "ui/views/view.h" 15 16 namespace views { 17 18 // A mock InputMethod implementation for testing purpose. 19 class VIEWS_EXPORT MockInputMethod : public InputMethodBase { 20 public: 21 MockInputMethod(); 22 explicit MockInputMethod(internal::InputMethodDelegate* delegate); 23 virtual ~MockInputMethod(); 24 25 // Overridden from InputMethod: 26 virtual void Init(Widget* widget) OVERRIDE; 27 virtual void OnFocus() OVERRIDE; 28 virtual void OnBlur() OVERRIDE; 29 virtual bool OnUntranslatedIMEMessage(const base::NativeEvent& event, 30 NativeEventResult* result) OVERRIDE; 31 virtual void DispatchKeyEvent(const ui::KeyEvent& key) OVERRIDE; 32 virtual void OnTextInputTypeChanged(View* view) OVERRIDE; 33 virtual void OnCaretBoundsChanged(View* view) OVERRIDE; 34 virtual void CancelComposition(View* view) OVERRIDE; 35 virtual void OnInputLocaleChanged() OVERRIDE; 36 virtual std::string GetInputLocale() OVERRIDE; 37 virtual base::i18n::TextDirection GetInputTextDirection() OVERRIDE; 38 virtual bool IsActive() OVERRIDE; 39 virtual bool IsCandidatePopupOpen() const OVERRIDE; 40 virtual bool IsMock() const OVERRIDE; 41 focus_changed()42 bool focus_changed() const { return focus_changed_; } untranslated_ime_message_called()43 bool untranslated_ime_message_called() const { 44 return untranslated_ime_message_called_; 45 } text_input_type_changed()46 bool text_input_type_changed() const { return text_input_type_changed_; } caret_bounds_changed()47 bool caret_bounds_changed() const { return caret_bounds_changed_; } cancel_composition_called()48 bool cancel_composition_called() const { return cancel_composition_called_; } input_locale_changed()49 bool input_locale_changed() const { return input_locale_changed_; } 50 51 // Clears all internal states and result. 52 void Clear(); 53 54 void SetCompositionTextForNextKey(const ui::CompositionText& composition); 55 void SetResultTextForNextKey(const string16& result); 56 57 void SetInputLocale(const std::string& locale); 58 void SetInputTextDirection(base::i18n::TextDirection direction); 59 void SetActive(bool active); 60 61 private: 62 // Overridden from InputMethodBase. 63 virtual void OnWillChangeFocus(View* focused_before, View* focused) OVERRIDE; 64 65 // Clears boolean states defined below. 66 void ClearStates(); 67 68 // Clears only composition information and result text. 69 void ClearResult(); 70 71 // Composition information for the next key event. It'll be cleared 72 // automatically after dispatching the next key event. 73 ui::CompositionText composition_; 74 bool composition_changed_; 75 76 // Result text for the next key event. It'll be cleared automatically after 77 // dispatching the next key event. 78 string16 result_text_; 79 80 // Record call state of corresponding methods. They will be set to false 81 // automatically before dispatching a key event. 82 bool focus_changed_; 83 bool untranslated_ime_message_called_; 84 bool text_input_type_changed_; 85 bool caret_bounds_changed_; 86 bool cancel_composition_called_; 87 bool input_locale_changed_; 88 89 // To mock corresponding input method prooperties. 90 std::string locale_; 91 base::i18n::TextDirection direction_; 92 bool active_; 93 94 DISALLOW_COPY_AND_ASSIGN(MockInputMethod); 95 }; 96 97 } // namespace views 98 99 #endif // UI_VIEWS_IME_MOCK_INPUT_METHOD_H_ 100