Index: ui/base/ime/input_method_ibus_unittest.cc |
diff --git a/ui/base/ime/input_method_ibus_unittest.cc b/ui/base/ime/input_method_ibus_unittest.cc |
index 5de25579ba1a4cbab0e9e899215c91de51b91c7c..471dd616996bb19d6ead58ff515d3ac2e807a46f 100644 |
--- a/ui/base/ime/input_method_ibus_unittest.cc |
+++ b/ui/base/ime/input_method_ibus_unittest.cc |
@@ -17,23 +17,19 @@ |
#include "chromeos/dbus/ibus/ibus_text.h" |
#include "chromeos/dbus/ibus/mock_ibus_client.h" |
#include "chromeos/ime/ibus_bridge.h" |
+#include "chromeos/ime/ibus_keymap.h" |
#include "chromeos/ime/mock_ime_candidate_window_handler.h" |
#include "chromeos/ime/mock_ime_engine_handler.h" |
#include "testing/gtest/include/gtest/gtest.h" |
#include "ui/base/ime/input_method_delegate.h" |
#include "ui/base/ime/input_method_ibus.h" |
#include "ui/base/ime/text_input_client.h" |
+#include "ui/events/event.h" |
+#include "ui/events/x/events_x_utils.h" |
#include "ui/gfx/rect.h" |
namespace ui { |
namespace { |
-const uint32 kTestIBusKeyVal1 = 97; |
-const uint32 kTestIBusKeyVal2 = 30; |
-const uint32 kTestIBusKeyCode1 = 98; |
-const uint32 kTestIBusKeyCode2 = 48; |
-const uint32 kTestIBusState1 = 99; |
-const uint32 kTestIBusState2 = 46; |
- |
typedef chromeos::IBusEngineHandlerInterface::KeyEventDoneCallback |
KeyEventCallback; |
@@ -70,45 +66,19 @@ class TestableInputMethodIBus : public InputMethodIBus { |
} |
struct ProcessKeyEventPostIMEArgs { |
- ProcessKeyEventPostIMEArgs() : handled(false) { |
- std::memset(&event, 0, sizeof(XEvent)); |
- } |
- XEvent event; |
+ ProcessKeyEventPostIMEArgs() : event(NULL), handled(false) {} |
+ const ui::KeyEvent* event; |
bool handled; |
}; |
- struct IBusKeyEventFromNativeKeyEventResult { |
- IBusKeyEventFromNativeKeyEventResult() : keyval(0), keycode(0), state(0) {} |
- uint32 keyval; |
- uint32 keycode; |
- uint32 state; |
- }; |
- |
// InputMethodIBus override. |
- virtual void ProcessKeyEventPostIME(const base::NativeEvent& native_key_event, |
- uint32 ibus_state, |
+ virtual void ProcessKeyEventPostIME(const ui::KeyEvent& key_event, |
bool handled) OVERRIDE { |
- process_key_event_post_ime_args_.event = *native_key_event; |
+ process_key_event_post_ime_args_.event = &key_event; |
process_key_event_post_ime_args_.handled = handled; |
++process_key_event_post_ime_call_count_; |
} |
- // We can't call X11 related function without display in unit test, so |
- // override with mock function. |
- virtual void IBusKeyEventFromNativeKeyEvent( |
- const base::NativeEvent& native_event, |
- uint32* ibus_keyval, |
- uint32* ibus_keycode, |
- uint32* ibus_state) OVERRIDE { |
- EXPECT_TRUE(native_event); |
- EXPECT_TRUE(ibus_keyval); |
- EXPECT_TRUE(ibus_keycode); |
- EXPECT_TRUE(ibus_state); |
- *ibus_keyval = ibus_key_event_from_native_key_event_result_.keyval; |
- *ibus_keycode = ibus_key_event_from_native_key_event_result_.keycode; |
- *ibus_state = ibus_key_event_from_native_key_event_result_.state; |
- } |
- |
void ResetCallCount() { |
process_key_event_post_ime_call_count_ = 0; |
} |
@@ -121,11 +91,6 @@ class TestableInputMethodIBus : public InputMethodIBus { |
return process_key_event_post_ime_call_count_; |
} |
- IBusKeyEventFromNativeKeyEventResult* |
- mutable_ibus_key_event_from_native_key_event_result() { |
- return &ibus_key_event_from_native_key_event_result_; |
- } |
- |
// Change access rights for testing. |
using InputMethodIBus::ExtractCompositionText; |
using InputMethodIBus::ResetContext; |
@@ -133,9 +98,6 @@ class TestableInputMethodIBus : public InputMethodIBus { |
private: |
ProcessKeyEventPostIMEArgs process_key_event_post_ime_args_; |
int process_key_event_post_ime_call_count_; |
- |
- IBusKeyEventFromNativeKeyEventResult |
- ibus_key_event_from_native_key_event_result_; |
}; |
class CreateInputContextSuccessHandler { |
@@ -321,9 +283,8 @@ class InputMethodIBusTest : public internal::InputMethodDelegate, |
} |
// ui::internal::InputMethodDelegate overrides: |
- virtual bool DispatchKeyEventPostIME( |
- const base::NativeEvent& native_key_event) OVERRIDE { |
- dispatched_native_event_ = native_key_event; |
+ virtual bool DispatchKeyEventPostIME(const ui::KeyEvent& key_event) OVERRIDE { |
+ dispatched_native_event_ = key_event.native_event(); |
return false; |
} |
virtual bool DispatchFabricatedKeyEventPostIME(ui::EventType type, |
@@ -990,31 +951,27 @@ class InputMethodIBusKeyEventTest : public InputMethodIBusTest { |
}; |
TEST_F(InputMethodIBusKeyEventTest, KeyEventDelayResponseTest) { |
- XEvent event = {}; |
- event.xkey.type = KeyPress; |
- |
- // Set up IBusKeyEventFromNativeKeyEvent result. |
- ime_->mutable_ibus_key_event_from_native_key_event_result()->keyval |
- = kTestIBusKeyVal1; |
- ime_->mutable_ibus_key_event_from_native_key_event_result()->keycode |
- = kTestIBusKeyCode1; |
- ime_->mutable_ibus_key_event_from_native_key_event_result()->state |
- = kTestIBusState1; |
+ XEvent xevent; |
+ ui::InitXKeyEventForTesting(ui::ET_KEY_PRESSED, |
+ ui::VKEY_A, |
+ ui::EF_SHIFT_DOWN, |
+ &xevent); |
+ const ui::KeyEvent event(&xevent, true); |
// Do key event. |
input_type_ = TEXT_INPUT_TYPE_TEXT; |
ime_->OnTextInputTypeChanged(this); |
- ime_->DispatchKeyEvent(&event); |
+ ime_->DispatchKeyEvent(event); |
// Check before state. |
- EXPECT_EQ(1, |
- mock_ime_engine_handler_->process_key_event_call_count()); |
- EXPECT_EQ(kTestIBusKeyVal1, |
- mock_ime_engine_handler_->last_processed_keysym()); |
- EXPECT_EQ(kTestIBusKeyCode1, |
- mock_ime_engine_handler_->last_processed_keycode()); |
- EXPECT_EQ(kTestIBusState1, |
- mock_ime_engine_handler_->last_processed_state()); |
+ EXPECT_EQ(1, mock_ime_engine_handler_->process_key_event_call_count()); |
+ EXPECT_EQ("A", mock_ime_engine_handler_->last_processed_keysym()); |
+ EXPECT_EQ("KeyA", mock_ime_engine_handler_->last_processed_keycode()); |
+ EXPECT_TRUE(mock_ime_engine_handler_->last_processed_is_key_down()); |
+ EXPECT_FALSE(mock_ime_engine_handler_->last_processed_is_alt_down()); |
+ EXPECT_FALSE(mock_ime_engine_handler_->last_processed_is_ctrl_down()); |
+ EXPECT_TRUE(mock_ime_engine_handler_->last_processed_is_shift_down()); |
+ EXPECT_FALSE(mock_ime_engine_handler_->last_processed_is_caps_lock_down()); |
EXPECT_EQ(0, ime_->process_key_event_post_ime_call_count()); |
// Do callback. |
@@ -1022,8 +979,10 @@ TEST_F(InputMethodIBusKeyEventTest, KeyEventDelayResponseTest) { |
// Check the results |
EXPECT_EQ(1, ime_->process_key_event_post_ime_call_count()); |
- EXPECT_TRUE(IsEqualXKeyEvent(event, |
- ime_->process_key_event_post_ime_args().event)); |
+ const ui::KeyEvent* stored_event = |
+ ime_->process_key_event_post_ime_args().event; |
+ EXPECT_TRUE(stored_event->HasNativeEvent()); |
+ EXPECT_TRUE(IsEqualXKeyEvent(xevent, *(stored_event->native_event()))); |
EXPECT_TRUE(ime_->process_key_event_post_ime_args().handled); |
} |
@@ -1032,49 +991,45 @@ TEST_F(InputMethodIBusKeyEventTest, MultiKeyEventDelayResponseTest) { |
input_type_ = TEXT_INPUT_TYPE_TEXT; |
ime_->OnTextInputTypeChanged(this); |
- XEvent event = {}; |
- event.xkey.type = KeyPress; |
- |
- // Set up IBusKeyEventFromNativeKeyEvent result for first key event. |
- ime_->mutable_ibus_key_event_from_native_key_event_result()->keyval |
- = kTestIBusKeyVal1; |
- ime_->mutable_ibus_key_event_from_native_key_event_result()->keycode |
- = kTestIBusKeyCode1; |
- ime_->mutable_ibus_key_event_from_native_key_event_result()->state |
- = kTestIBusState1; |
+ XEvent xevent; |
+ ui::InitXKeyEventForTesting(ui::ET_KEY_PRESSED, |
+ ui::VKEY_B, |
+ ui::EF_ALT_DOWN, |
+ &xevent); |
+ const ui::KeyEvent event(&xevent, true); |
// Do key event. |
- ime_->DispatchKeyEvent(&event); |
- EXPECT_EQ(kTestIBusKeyVal1, |
- mock_ime_engine_handler_->last_processed_keysym()); |
- EXPECT_EQ(kTestIBusKeyCode1, |
- mock_ime_engine_handler_->last_processed_keycode()); |
- EXPECT_EQ(kTestIBusState1, |
- mock_ime_engine_handler_->last_processed_state()); |
+ ime_->DispatchKeyEvent(event); |
+ EXPECT_EQ("b", mock_ime_engine_handler_->last_processed_keysym()); |
+ EXPECT_EQ("KeyB", mock_ime_engine_handler_->last_processed_keycode()); |
+ EXPECT_TRUE(mock_ime_engine_handler_->last_processed_is_key_down()); |
+ EXPECT_TRUE(mock_ime_engine_handler_->last_processed_is_alt_down()); |
+ EXPECT_FALSE(mock_ime_engine_handler_->last_processed_is_ctrl_down()); |
+ EXPECT_FALSE(mock_ime_engine_handler_->last_processed_is_shift_down()); |
+ EXPECT_FALSE(mock_ime_engine_handler_->last_processed_is_caps_lock_down()); |
KeyEventCallback first_callback = |
mock_ime_engine_handler_->last_passed_callback(); |
- // Set up IBusKeyEventFromNativeKeyEvent result for second key event. |
- ime_->mutable_ibus_key_event_from_native_key_event_result()->keyval |
- = kTestIBusKeyVal2; |
- ime_->mutable_ibus_key_event_from_native_key_event_result()->keycode |
- = kTestIBusKeyCode2; |
- ime_->mutable_ibus_key_event_from_native_key_event_result()->state |
- = kTestIBusState2; |
- |
// Do key event again. |
- ime_->DispatchKeyEvent(&event); |
- EXPECT_EQ(kTestIBusKeyVal2, |
- mock_ime_engine_handler_->last_processed_keysym()); |
- EXPECT_EQ(kTestIBusKeyCode2, |
- mock_ime_engine_handler_->last_processed_keycode()); |
- EXPECT_EQ(kTestIBusState2, |
- mock_ime_engine_handler_->last_processed_state()); |
+ XEvent xevent2; |
+ ui::InitXKeyEventForTesting(ui::ET_KEY_RELEASED, |
+ ui::VKEY_B, |
+ ui::EF_ALT_DOWN, |
+ &xevent2); |
+ const ui::KeyEvent event2(&xevent2, true); |
+ |
+ ime_->DispatchKeyEvent(event2); |
+ EXPECT_EQ("b", mock_ime_engine_handler_->last_processed_keysym()); |
+ EXPECT_EQ("KeyB", mock_ime_engine_handler_->last_processed_keycode()); |
+ EXPECT_FALSE(mock_ime_engine_handler_->last_processed_is_key_down()); |
+ EXPECT_TRUE(mock_ime_engine_handler_->last_processed_is_alt_down()); |
+ EXPECT_FALSE(mock_ime_engine_handler_->last_processed_is_ctrl_down()); |
+ EXPECT_FALSE(mock_ime_engine_handler_->last_processed_is_shift_down()); |
+ EXPECT_FALSE(mock_ime_engine_handler_->last_processed_is_caps_lock_down()); |
// Check before state. |
- EXPECT_EQ(2, |
- mock_ime_engine_handler_->process_key_event_call_count()); |
+ EXPECT_EQ(2, mock_ime_engine_handler_->process_key_event_call_count()); |
EXPECT_EQ(0, ime_->process_key_event_post_ime_call_count()); |
// Do callback for first key event. |
@@ -1082,8 +1037,10 @@ TEST_F(InputMethodIBusKeyEventTest, MultiKeyEventDelayResponseTest) { |
// Check the results for first key event. |
EXPECT_EQ(1, ime_->process_key_event_post_ime_call_count()); |
- EXPECT_TRUE(IsEqualXKeyEvent(event, |
- ime_->process_key_event_post_ime_args().event)); |
+ const ui::KeyEvent* stored_event = |
+ ime_->process_key_event_post_ime_args().event; |
+ EXPECT_TRUE(stored_event->HasNativeEvent()); |
+ EXPECT_TRUE(IsEqualXKeyEvent(xevent, *(stored_event->native_event()))); |
EXPECT_TRUE(ime_->process_key_event_post_ime_args().handled); |
// Do callback for second key event. |
@@ -1091,31 +1048,27 @@ TEST_F(InputMethodIBusKeyEventTest, MultiKeyEventDelayResponseTest) { |
// Check the results for second key event. |
EXPECT_EQ(2, ime_->process_key_event_post_ime_call_count()); |
- EXPECT_TRUE(IsEqualXKeyEvent(event, |
- ime_->process_key_event_post_ime_args().event)); |
+ stored_event = ime_->process_key_event_post_ime_args().event; |
+ EXPECT_TRUE(stored_event->HasNativeEvent()); |
+ EXPECT_TRUE(IsEqualXKeyEvent(xevent2, *(stored_event->native_event()))); |
EXPECT_FALSE(ime_->process_key_event_post_ime_args().handled); |
} |
TEST_F(InputMethodIBusKeyEventTest, KeyEventDelayResponseResetTest) { |
- XEvent event = {}; |
- event.xkey.type = KeyPress; |
- |
- // Set up IBusKeyEventFromNativeKeyEvent result. |
- ime_->mutable_ibus_key_event_from_native_key_event_result()->keyval |
- = kTestIBusKeyVal1; |
- ime_->mutable_ibus_key_event_from_native_key_event_result()->keycode |
- = kTestIBusKeyCode1; |
- ime_->mutable_ibus_key_event_from_native_key_event_result()->state |
- = kTestIBusState1; |
+ XEvent xevent; |
+ ui::InitXKeyEventForTesting(ui::ET_KEY_PRESSED, |
+ ui::VKEY_A, |
+ ui::EF_NONE, |
+ &xevent); |
+ const ui::KeyEvent event(&xevent, true); |
// Do key event. |
input_type_ = TEXT_INPUT_TYPE_TEXT; |
ime_->OnTextInputTypeChanged(this); |
- ime_->DispatchKeyEvent(&event); |
+ ime_->DispatchKeyEvent(event); |
// Check before state. |
- EXPECT_EQ(1, |
- mock_ime_engine_handler_->process_key_event_call_count()); |
+ EXPECT_EQ(1, mock_ime_engine_handler_->process_key_event_call_count()); |
EXPECT_EQ(0, ime_->process_key_event_post_ime_call_count()); |
ime_->ResetContext(); |
@@ -1125,7 +1078,6 @@ TEST_F(InputMethodIBusKeyEventTest, KeyEventDelayResponseResetTest) { |
EXPECT_EQ(0, ime_->process_key_event_post_ime_call_count()); |
} |
- |
// TODO(nona): Introduce ProcessKeyEventPostIME tests(crbug.com/156593). |
} // namespace ui |