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 bool IsActive() OVERRIDE; 38 virtual bool IsCandidatePopupOpen() const OVERRIDE; 39 virtual void ShowImeIfNeeded() 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 base::string16& result); 56 57 void SetInputLocale(const std::string& locale); 58 void SetActive(bool active); 59 60 private: 61 // Overridden from InputMethodBase. 62 virtual void OnWillChangeFocus(View* focused_before, View* focused) OVERRIDE; 63 64 // Clears boolean states defined below. 65 void ClearStates(); 66 67 // Clears only composition information and result text. 68 void ClearResult(); 69 70 // Composition information for the next key event. It'll be cleared 71 // automatically after dispatching the next key event. 72 ui::CompositionText composition_; 73 bool composition_changed_; 74 75 // Result text for the next key event. It'll be cleared automatically after 76 // dispatching the next key event. 77 base::string16 result_text_; 78 79 // Record call state of corresponding methods. They will be set to false 80 // automatically before dispatching a key event. 81 bool focus_changed_; 82 bool untranslated_ime_message_called_; 83 bool text_input_type_changed_; 84 bool caret_bounds_changed_; 85 bool cancel_composition_called_; 86 bool input_locale_changed_; 87 88 // To mock corresponding input method prooperties. 89 std::string locale_; 90 bool active_; 91 92 DISALLOW_COPY_AND_ASSIGN(MockInputMethod); 93 }; 94 95 } // namespace views 96 97 #endif // UI_VIEWS_IME_MOCK_INPUT_METHOD_H_ 98