diff options
author | komatsu@chromium.org <komatsu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-28 21:29:20 +0000 |
---|---|---|
committer | komatsu@chromium.org <komatsu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-28 21:29:20 +0000 |
commit | 27f9b621d913eaad5850b749ecd27dca6800cd6b (patch) | |
tree | c3ba9733ba3703f3d7c65a69e4ab306a8fe73969 /ui/base | |
parent | 6c31f3e63d79c7edbdcfdf2412d2e939aed8334d (diff) | |
download | chromium_src-27f9b621d913eaad5850b749ecd27dca6800cd6b.zip chromium_src-27f9b621d913eaad5850b749ecd27dca6800cd6b.tar.gz chromium_src-27f9b621d913eaad5850b749ecd27dca6800cd6b.tar.bz2 |
Use ui::KeyEvent for ProcessKeyEvent.
This patch stops using IBus specific key events, but use the common ui::KeyEvent class. This will enable to merge handlers of native events and fabricated events.
BUG=312218
Review URL: https://codereview.chromium.org/88313002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@237838 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/base')
-rw-r--r-- | ui/base/ime/chromeos/ibus_bridge.h | 14 | ||||
-rw-r--r-- | ui/base/ime/chromeos/mock_ime_engine_handler.cc | 13 | ||||
-rw-r--r-- | ui/base/ime/chromeos/mock_ime_engine_handler.h | 19 | ||||
-rw-r--r-- | ui/base/ime/input_method_ibus.cc | 4 | ||||
-rw-r--r-- | ui/base/ime/input_method_ibus_unittest.cc | 51 |
5 files changed, 36 insertions, 65 deletions
diff --git a/ui/base/ime/chromeos/ibus_bridge.h b/ui/base/ime/chromeos/ibus_bridge.h index 7a53253..e0e506b 100644 --- a/ui/base/ime/chromeos/ibus_bridge.h +++ b/ui/base/ime/chromeos/ibus_bridge.h @@ -17,6 +17,10 @@ namespace gfx { class Rect; } // namespace gfx +namespace ui { +class KeyEvent; +} // namespace ui + namespace chromeos { namespace ibus { // Following button indicator value is introduced from @@ -91,15 +95,9 @@ class UI_EXPORT IBusEngineHandlerInterface { // Called when the IME is reset. virtual void Reset() = 0; - // Called when the key event is received. The |keycode| is raw layout - // independent keycode. The |keysym| is result of XLookupString function - // which translate |keycode| to keyboard layout dependent symbol value. + // Called when the key event is received. // Actual implementation must call |callback| after key event handling. - // For example: key press event for 'd' key on us layout and dvorak layout. - // keyval keycode state - // us layout : 0x64 0x20 0x00 - // dvorak layout : 0x65 0x20 0x00 - virtual void ProcessKeyEvent(uint32 keysym, uint32 keycode, uint32 state, + virtual void ProcessKeyEvent(const ui::KeyEvent& key_event, const KeyEventDoneCallback& callback) = 0; // Called when the candidate in lookup table is clicked. The |index| is 0 diff --git a/ui/base/ime/chromeos/mock_ime_engine_handler.cc b/ui/base/ime/chromeos/mock_ime_engine_handler.cc index d7e664f..239e583c0 100644 --- a/ui/base/ime/chromeos/mock_ime_engine_handler.cc +++ b/ui/base/ime/chromeos/mock_ime_engine_handler.cc @@ -15,10 +15,7 @@ MockIMEEngineHandler::MockIMEEngineHandler() last_text_input_context_(ui::TEXT_INPUT_TYPE_NONE, ui::TEXT_INPUT_MODE_DEFAULT), last_set_surrounding_cursor_pos_(0), - last_set_surrounding_anchor_pos_(0), - last_processed_keysym_(0), - last_processed_keycode_(0), - last_processed_state_(0) { + last_set_surrounding_anchor_pos_(0) { } MockIMEEngineHandler::~MockIMEEngineHandler() { @@ -48,14 +45,10 @@ void MockIMEEngineHandler::Reset() { } void MockIMEEngineHandler::ProcessKeyEvent( - uint32 keysym, - uint32 keycode, - uint32 state, + const ui::KeyEvent& key_event, const KeyEventDoneCallback& callback) { ++process_key_event_call_count_; - last_processed_keysym_ = keysym; - last_processed_keycode_ = keycode; - last_processed_state_ = state; + last_processed_key_event_.reset(key_event.Copy()); last_passed_callback_ = callback; } diff --git a/ui/base/ime/chromeos/mock_ime_engine_handler.h b/ui/base/ime/chromeos/mock_ime_engine_handler.h index 56fc259..2e77dca 100644 --- a/ui/base/ime/chromeos/mock_ime_engine_handler.h +++ b/ui/base/ime/chromeos/mock_ime_engine_handler.h @@ -7,6 +7,7 @@ #include "ui/base/ime/chromeos/ibus_bridge.h" #include "ui/base/ui_export.h" +#include "ui/events/event.h" namespace chromeos { @@ -21,7 +22,7 @@ class UI_EXPORT MockIMEEngineHandler : public IBusEngineHandlerInterface { virtual void Disable() OVERRIDE; virtual void PropertyActivate(const std::string& property_name) OVERRIDE; virtual void Reset() OVERRIDE; - virtual void ProcessKeyEvent(uint32 keysym, uint32 keycode, uint32 state, + virtual void ProcessKeyEvent(const ui::KeyEvent& key_event, const KeyEventDoneCallback& callback) OVERRIDE; virtual void CandidateClicked(uint32 index, ibus::IBusMouseButton button, uint32 state) OVERRIDE; @@ -58,16 +59,8 @@ class UI_EXPORT MockIMEEngineHandler : public IBusEngineHandlerInterface { return last_set_surrounding_anchor_pos_; } - uint32 last_processed_keysym() const { - return last_processed_keysym_; - } - - uint32 last_processed_keycode() const { - return last_processed_keycode_; - } - - uint32 last_processed_state() const { - return last_processed_state_; + const ui::KeyEvent* last_processed_key_event() const { + return last_processed_key_event_.get(); } const KeyEventDoneCallback& last_passed_callback() const { @@ -85,9 +78,7 @@ class UI_EXPORT MockIMEEngineHandler : public IBusEngineHandlerInterface { std::string last_set_surrounding_text_; uint32 last_set_surrounding_cursor_pos_; uint32 last_set_surrounding_anchor_pos_; - uint32 last_processed_keysym_; - uint32 last_processed_keycode_; - uint32 last_processed_state_; + scoped_ptr<ui::KeyEvent> last_processed_key_event_; KeyEventDoneCallback last_passed_callback_; }; diff --git a/ui/base/ime/input_method_ibus.cc b/ui/base/ime/input_method_ibus.cc index 28e7d7e..7ae75fb 100644 --- a/ui/base/ime/input_method_ibus.cc +++ b/ui/base/ime/input_method_ibus.cc @@ -189,9 +189,7 @@ bool InputMethodIBus::DispatchKeyEvent(const ui::KeyEvent& event) { ui::KeyEvent* copied_event = event.Copy(); GetEngine()->ProcessKeyEvent( - ibus_keyval, - ibus_keycode, - ibus_state, + event, base::Bind(&InputMethodIBus::ProcessKeyEventDone, weak_ptr_factory_.GetWeakPtr(), current_keyevent_id_, diff --git a/ui/base/ime/input_method_ibus_unittest.cc b/ui/base/ime/input_method_ibus_unittest.cc index c851211..aa0ea2c 100644 --- a/ui/base/ime/input_method_ibus_unittest.cc +++ b/ui/base/ime/input_method_ibus_unittest.cc @@ -923,10 +923,9 @@ class InputMethodIBusKeyEventTest : public InputMethodIBusTest { }; TEST_F(InputMethodIBusKeyEventTest, KeyEventDelayResponseTest) { - const int kXFlags = ShiftMask; - const unsigned int kIbusFlags = ui::EF_SHIFT_DOWN; + const int kFlags = ui::EF_SHIFT_DOWN; ScopedXI2Event xevent; - xevent.InitKeyEvent(ui::ET_KEY_PRESSED, ui::VKEY_A, kXFlags); + xevent.InitKeyEvent(ui::ET_KEY_PRESSED, ui::VKEY_A, kFlags); const ui::KeyEvent event(xevent, true); // Do key event. @@ -935,14 +934,12 @@ TEST_F(InputMethodIBusKeyEventTest, KeyEventDelayResponseTest) { ime_->DispatchKeyEvent(event); // Check before state. + const ui::KeyEvent* key_event = + mock_ime_engine_handler_->last_processed_key_event(); EXPECT_EQ(1, mock_ime_engine_handler_->process_key_event_call_count()); - EXPECT_EQ("A", - chromeos::input_method::GetIBusKey( - mock_ime_engine_handler_->last_processed_keysym())); - EXPECT_EQ("KeyA", - chromeos::input_method::GetIBusKeyCode( - mock_ime_engine_handler_->last_processed_keycode())); - EXPECT_EQ(kIbusFlags, mock_ime_engine_handler_->last_processed_state()); + EXPECT_EQ(ui::VKEY_A, key_event->key_code()); + EXPECT_EQ("KeyA", key_event->code()); + EXPECT_EQ(kFlags, key_event->flags()); EXPECT_EQ(0, ime_->process_key_event_post_ime_call_count()); // Do callback. @@ -962,38 +959,33 @@ TEST_F(InputMethodIBusKeyEventTest, MultiKeyEventDelayResponseTest) { input_type_ = TEXT_INPUT_TYPE_TEXT; ime_->OnTextInputTypeChanged(this); - const int kXFlags = ShiftMask; - const unsigned int kIbusFlags = ui::EF_SHIFT_DOWN; + const int kFlags = ui::EF_SHIFT_DOWN; ScopedXI2Event xevent; - xevent.InitKeyEvent(ui::ET_KEY_PRESSED, ui::VKEY_B, kXFlags); + xevent.InitKeyEvent(ui::ET_KEY_PRESSED, ui::VKEY_B, kFlags); const ui::KeyEvent event(xevent, true); // Do key event. ime_->DispatchKeyEvent(event); - EXPECT_EQ("B", - chromeos::input_method::GetIBusKey( - mock_ime_engine_handler_->last_processed_keysym())); - EXPECT_EQ("KeyB", - chromeos::input_method::GetIBusKeyCode( - mock_ime_engine_handler_->last_processed_keycode())); - EXPECT_EQ(kIbusFlags, mock_ime_engine_handler_->last_processed_state()); + const ui::KeyEvent* key_event = + mock_ime_engine_handler_->last_processed_key_event(); + EXPECT_EQ(ui::VKEY_B, key_event->key_code()); + EXPECT_EQ("KeyB", key_event->code()); + EXPECT_EQ(kFlags, key_event->flags()); KeyEventCallback first_callback = mock_ime_engine_handler_->last_passed_callback(); // Do key event again. ScopedXI2Event xevent2; - xevent2.InitKeyEvent(ui::ET_KEY_PRESSED, ui::VKEY_C, kXFlags); + xevent2.InitKeyEvent(ui::ET_KEY_PRESSED, ui::VKEY_C, kFlags); const ui::KeyEvent event2(xevent2, true); ime_->DispatchKeyEvent(event2); - EXPECT_EQ("C", - chromeos::input_method::GetIBusKey( - mock_ime_engine_handler_->last_processed_keysym())); - EXPECT_EQ("KeyC", - chromeos::input_method::GetIBusKeyCode( - mock_ime_engine_handler_->last_processed_keycode())); - EXPECT_EQ(kIbusFlags, mock_ime_engine_handler_->last_processed_state()); + const ui::KeyEvent* key_event2 = + mock_ime_engine_handler_->last_processed_key_event(); + EXPECT_EQ(ui::VKEY_C, key_event2->key_code()); + EXPECT_EQ("KeyC", key_event2->code()); + EXPECT_EQ(kFlags, key_event2->flags()); // Check before state. EXPECT_EQ(2, @@ -1023,9 +1015,8 @@ TEST_F(InputMethodIBusKeyEventTest, MultiKeyEventDelayResponseTest) { } TEST_F(InputMethodIBusKeyEventTest, KeyEventDelayResponseResetTest) { - const int kXFlags = ShiftMask; ScopedXI2Event xevent; - xevent.InitKeyEvent(ui::ET_KEY_PRESSED, ui::VKEY_A, kXFlags); + xevent.InitKeyEvent(ui::ET_KEY_PRESSED, ui::VKEY_A, ui::EF_SHIFT_DOWN); const ui::KeyEvent event(xevent, true); // Do key event. |