summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ash/accelerators/accelerator_controller_unittest.cc18
-rw-r--r--ash/accelerators/nested_dispatcher_controller_unittest.cc16
-rw-r--r--ash/wm/sticky_keys_unittest.cc53
-rw-r--r--chrome/browser/chromeos/keyboard_driven_event_rewriter_unittest.cc27
-rw-r--r--chrome/browser/ui/ash/event_rewriter_unittest.cc46
-rw-r--r--chrome/browser/ui/views/constrained_window_views_browsertest.cc7
-rw-r--r--content/browser/renderer_host/web_input_event_aura_unittest.cc38
-rw-r--r--content/renderer/render_view_browsertest.cc31
-rw-r--r--ui/aura/root_window_host_x11_unittest.cc74
-rw-r--r--ui/base/ime/input_method_ibus_unittest.cc31
-rw-r--r--ui/events/event_unittest.cc55
-rw-r--r--ui/events/test/events_test_utils_x11.cc205
-rw-r--r--ui/events/test/events_test_utils_x11.h82
-rw-r--r--ui/events/x/events_x_unittest.cc81
14 files changed, 328 insertions, 436 deletions
diff --git a/ash/accelerators/accelerator_controller_unittest.cc b/ash/accelerators/accelerator_controller_unittest.cc
index 37ab713..ce3476b 100644
--- a/ash/accelerators/accelerator_controller_unittest.cc
+++ b/ash/accelerators/accelerator_controller_unittest.cc
@@ -665,24 +665,18 @@ TEST_F(AcceleratorControllerTest, MAYBE_ProcessOnce) {
EXPECT_FALSE(dispatcher->AsRootWindowHostDelegate()->OnHostKeyEvent(
&key_event3));
#elif defined(USE_X11)
- XEvent key_event;
- ui::InitXKeyEventForTesting(ui::ET_KEY_PRESSED,
- ui::VKEY_A,
- 0,
- &key_event);
- ui::TranslatedKeyEvent key_event1(&key_event, false);
+ ui::ScopedXI2Event key_event;
+ key_event.InitKeyEvent(ui::ET_KEY_PRESSED, ui::VKEY_A, 0);
+ ui::TranslatedKeyEvent key_event1(key_event, false);
EXPECT_TRUE(dispatcher->AsRootWindowHostDelegate()->OnHostKeyEvent(
&key_event1));
- ui::TranslatedKeyEvent key_event2(&key_event, true);
+ ui::TranslatedKeyEvent key_event2(key_event, true);
EXPECT_FALSE(dispatcher->AsRootWindowHostDelegate()->OnHostKeyEvent(
&key_event2));
- ui::InitXKeyEventForTesting(ui::ET_KEY_RELEASED,
- ui::VKEY_A,
- 0,
- &key_event);
- ui::TranslatedKeyEvent key_event3(&key_event, false);
+ key_event.InitKeyEvent(ui::ET_KEY_RELEASED, ui::VKEY_A, 0);
+ ui::TranslatedKeyEvent key_event3(key_event, false);
EXPECT_FALSE(dispatcher->AsRootWindowHostDelegate()->OnHostKeyEvent(
&key_event3));
#endif
diff --git a/ash/accelerators/nested_dispatcher_controller_unittest.cc b/ash/accelerators/nested_dispatcher_controller_unittest.cc
index 56440ee..445c29c 100644
--- a/ash/accelerators/nested_dispatcher_controller_unittest.cc
+++ b/ash/accelerators/nested_dispatcher_controller_unittest.cc
@@ -84,19 +84,13 @@ void DispatchKeyReleaseA() {
MSG native_event_up = { NULL, WM_KEYUP, ui::VKEY_A, 0 };
ash::Shell::GetPrimaryRootWindow()->host()->PostNativeEvent(native_event_up);
#elif defined(USE_X11)
- XEvent native_event;
- ui::InitXKeyEventForTesting(ui::ET_KEY_PRESSED,
- ui::VKEY_A,
- 0,
- &native_event);
+ ui::ScopedXI2Event native_event;
+ native_event.InitKeyEvent(ui::ET_KEY_PRESSED, ui::VKEY_A, 0);
aura::WindowEventDispatcher* dispatcher =
ash::Shell::GetPrimaryRootWindow()->GetDispatcher();
- dispatcher->host()->PostNativeEvent(&native_event);
- ui::InitXKeyEventForTesting(ui::ET_KEY_RELEASED,
- ui::VKEY_A,
- 0,
- &native_event);
- dispatcher->host()->PostNativeEvent(&native_event);
+ dispatcher->host()->PostNativeEvent(native_event);
+ native_event.InitKeyEvent(ui::ET_KEY_RELEASED, ui::VKEY_A, 0);
+ dispatcher->host()->PostNativeEvent(native_event);
#endif
// Send noop event to signal dispatcher to exit.
diff --git a/ash/wm/sticky_keys_unittest.cc b/ash/wm/sticky_keys_unittest.cc
index e05b05e..e8e8975 100644
--- a/ash/wm/sticky_keys_unittest.cc
+++ b/ash/wm/sticky_keys_unittest.cc
@@ -161,57 +161,43 @@ class StickyKeysTest : public test::AshTestBase,
}
}
- // Generates keyboard event.
ui::KeyEvent* GenerateKey(bool is_key_press, ui::KeyboardCode code) {
- XEvent* xev = new XEvent();
- ui::InitXKeyEventForTesting(
+ scoped_xevent_.InitKeyEvent(
is_key_press ? ui::ET_KEY_PRESSED : ui::ET_KEY_RELEASED,
code,
- 0,
- xev);
- xevs_.push_back(xev);
- ui::KeyEvent* event = new ui::KeyEvent(xev, false);
+ 0);
+ ui::KeyEvent* event = new ui::KeyEvent(scoped_xevent_, false);
ui::Event::DispatcherApi dispatcher(event);
dispatcher.set_target(target_);
return event;
}
ui::MouseEvent* GenerateMouseEvent(bool is_button_press) {
- XEvent* xev = new XEvent();
- ui::InitXButtonEventForTesting(
- is_button_press ? ui::ET_MOUSE_PRESSED : ui::ET_MOUSE_RELEASED,
- 0,
- xev);
- xevs_.push_back(xev);
- ui::MouseEvent* event = new ui::MouseEvent(xev);
+ scoped_xevent_.InitButtonEvent(
+ is_button_press ? ui::ET_MOUSE_PRESSED : ui::ET_MOUSE_RELEASED, 0);
+ ui::MouseEvent* event = new ui::MouseEvent(scoped_xevent_);
ui::Event::DispatcherApi dispatcher(event);
dispatcher.set_target(target_);
return event;
}
ui::MouseWheelEvent* GenerateMouseWheelEvent(int wheel_delta) {
- EXPECT_FALSE(wheel_delta == 0);
- XEvent* xev = new XEvent();
- ui::InitXMouseWheelEventForTesting(wheel_delta, 0, xev);
- xevs_.push_back(xev);
- ui::MouseWheelEvent* event = new ui::MouseWheelEvent(xev);
+ EXPECT_NE(0, wheel_delta);
+ scoped_xevent_.InitMouseWheelEvent(wheel_delta, 0);
+ ui::MouseWheelEvent* event = new ui::MouseWheelEvent(scoped_xevent_);
ui::Event::DispatcherApi dispatcher(event);
dispatcher.set_target(target_);
return event;
}
ui::ScrollEvent* GenerateScrollEvent(int scroll_delta) {
- EXPECT_FALSE(scroll_delta == 0);
- XEvent* xev = ui::CreateScrollEventForTest(
- kScrollDeviceId, // deviceid
- 0, // x_offset
- scroll_delta, // y_offset
- 0, // x_offset_ordinal
- scroll_delta, // y_offset_ordinal
- 2); // finger_count
- xi2_evs_.push_back(new ui::ScopedXI2Event(xev));
-
- ui::ScrollEvent* event = new ui::ScrollEvent(xev);
+ scoped_xevent_.InitScrollEvent(kScrollDeviceId, // deviceid
+ 0, // x_offset
+ scroll_delta, // y_offset
+ 0, // x_offset_ordinal
+ scroll_delta, // y_offset_ordinal
+ 2); // finger_count
+ ui::ScrollEvent* event = new ui::ScrollEvent(scoped_xevent_);
ui::Event::DispatcherApi dispatcher(event);
dispatcher.set_target(target_);
return event;
@@ -265,12 +251,9 @@ class StickyKeysTest : public test::AshTestBase,
aura::Window* target_;
// The root window of |target_|. Not owned.
aura::Window* root_window_;
- // Stores all generated XEvents.
- ScopedVector<XEvent> xevs_;
- // Stores all generated XInput2 XEvents. We use a scoped wrapper class here
- // to properly delete these events.
- ScopedVector<ui::ScopedXI2Event> xi2_evs_;
+ // Used to construct the various X events.
+ ui::ScopedXI2Event scoped_xevent_;
DISALLOW_COPY_AND_ASSIGN(StickyKeysTest);
};
diff --git a/chrome/browser/chromeos/keyboard_driven_event_rewriter_unittest.cc b/chrome/browser/chromeos/keyboard_driven_event_rewriter_unittest.cc
index 657c34e..151bbab 100644
--- a/chrome/browser/chromeos/keyboard_driven_event_rewriter_unittest.cc
+++ b/chrome/browser/chromeos/keyboard_driven_event_rewriter_unittest.cc
@@ -16,22 +16,6 @@
namespace chromeos {
-// Creates an XKeyEvent to initialize a ui::KeyEvent that is passed to
-// KeyboardDrivenEventRewriter for processing.
-void InitXKeyEvent(ui::KeyboardCode ui_keycode,
- int ui_flags,
- ui::EventType ui_type,
- KeyCode x_keycode,
- unsigned int x_state,
- XEvent* event) {
- ui::InitXKeyEventForTesting(ui_type,
- ui_keycode,
- ui_flags,
- event);
- event->xkey.keycode = x_keycode;
- event->xkey.state = x_state;
-}
-
class KeyboardDrivenEventRewriterTest : public testing::Test {
public:
KeyboardDrivenEventRewriterTest()
@@ -53,13 +37,16 @@ class KeyboardDrivenEventRewriterTest : public testing::Test {
ui::EventType ui_type,
KeyCode x_keycode,
unsigned int x_state) {
- XEvent xev;
- InitXKeyEvent(ui_keycode, ui_flags, ui_type, x_keycode, x_state, &xev);
- ui::KeyEvent keyevent(&xev, false /* is_char */);
+ ui::ScopedXI2Event xev;
+ xev.InitKeyEvent(ui_type, ui_keycode, ui_flags);
+ XEvent* xevent = xev;
+ xevent->xkey.keycode = x_keycode;
+ xevent->xkey.state = x_state;
+ ui::KeyEvent keyevent(xev, false /* is_char */);
bool changed = rewriter_.RewriteForTesting(&keyevent);
return base::StringPrintf("ui_flags=%d x_state=%u changed=%d",
keyevent.flags(),
- xev.xkey.state,
+ xevent->xkey.state,
changed);
}
diff --git a/chrome/browser/ui/ash/event_rewriter_unittest.cc b/chrome/browser/ui/ash/event_rewriter_unittest.cc
index 304a9b7..34895b7 100644
--- a/chrome/browser/ui/ash/event_rewriter_unittest.cc
+++ b/chrome/browser/ui/ash/event_rewriter_unittest.cc
@@ -33,34 +33,23 @@
namespace {
-void InitXKeyEvent(ui::KeyboardCode ui_keycode,
- int ui_flags,
- ui::EventType ui_type,
- KeyCode x_keycode,
- unsigned int x_state,
- XEvent* event) {
- ui::InitXKeyEventForTesting(ui_type,
- ui_keycode,
- ui_flags,
- event);
- event->xkey.keycode = x_keycode;
- event->xkey.state = x_state;
-}
-
std::string GetRewrittenEventAsString(EventRewriter* rewriter,
ui::KeyboardCode ui_keycode,
int ui_flags,
ui::EventType ui_type,
KeyCode x_keycode,
unsigned int x_state) {
- XEvent xev;
- InitXKeyEvent(ui_keycode, ui_flags, ui_type, x_keycode, x_state, &xev);
- ui::KeyEvent keyevent(&xev, false /* is_char */);
+ ui::ScopedXI2Event xev;
+ xev.InitKeyEvent(ui_type, ui_keycode, ui_flags);
+ XEvent* xevent = xev;
+ xevent->xkey.keycode = x_keycode;
+ xevent->xkey.state = x_state;
+ ui::KeyEvent keyevent(xev, false /* is_char */);
rewriter->RewriteForTesting(&keyevent);
return base::StringPrintf(
"ui_keycode=%d ui_flags=%d ui_type=%d x_keycode=%u x_state=%u x_type=%d",
keyevent.key_code(), keyevent.flags(), keyevent.type(),
- xev.xkey.keycode, xev.xkey.state, xev.xkey.type);
+ xevent->xkey.keycode, xevent->xkey.state, xevent->xkey.type);
}
std::string GetExpectedResultAsString(ui::KeyboardCode ui_keycode,
@@ -2305,17 +2294,18 @@ TEST_F(EventRewriterTest, TestRewriteKeyEventSentByXSendEvent) {
// Send left control press.
std::string rewritten_event;
{
- XEvent xev;
- InitXKeyEvent(ui::VKEY_CONTROL, 0, ui::ET_KEY_PRESSED,
- keycode_control_l_, 0U, &xev);
- xev.xkey.send_event = True; // XSendEvent() always does this.
- ui::KeyEvent keyevent(&xev, false /* is_char */);
+ ui::ScopedXI2Event xev;
+ xev.InitKeyEvent(ui::ET_KEY_PRESSED, ui::VKEY_CONTROL, 0);
+ XEvent* xevent = xev;
+ xevent->xkey.keycode = keycode_control_l_;
+ xevent->xkey.send_event = True; // XSendEvent() always does this.
+ ui::KeyEvent keyevent(xev, false /* is_char */);
rewriter.RewriteForTesting(&keyevent);
rewritten_event = base::StringPrintf(
"ui_keycode=%d ui_flags=%d ui_type=%d "
"x_keycode=%u x_state=%u x_type=%d",
keyevent.key_code(), keyevent.flags(), keyevent.type(),
- xev.xkey.keycode, xev.xkey.state, xev.xkey.type);
+ xevent->xkey.keycode, xevent->xkey.state, xevent->xkey.type);
}
// XK_Control_L (left Control key) should NOT be remapped to Alt if send_event
@@ -2357,10 +2347,12 @@ TEST_F(EventRewriterAshTest, TopRowKeysAreFunctionKeys) {
window_state->Activate();
// Create a simulated keypress of F1 targetted at the window.
- XEvent xev_f1;
+ ui::ScopedXI2Event xev_f1;
KeyCode keycode_f1 = XKeysymToKeycode(gfx::GetXDisplay(), XK_F1);
- InitXKeyEvent(ui::VKEY_F1, 0, ui::ET_KEY_PRESSED, keycode_f1, 0u, &xev_f1);
- ui::KeyEvent press_f1(&xev_f1, false);
+ xev_f1.InitKeyEvent(ui::ET_KEY_PRESSED, ui::VKEY_F1, 0);
+ XEvent* xevent = xev_f1;
+ xevent->xkey.keycode = keycode_f1;
+ ui::KeyEvent press_f1(xev_f1, false);
ui::Event::DispatcherApi dispatch_helper(&press_f1);
dispatch_helper.set_target(window.get());
diff --git a/chrome/browser/ui/views/constrained_window_views_browsertest.cc b/chrome/browser/ui/views/constrained_window_views_browsertest.cc
index 1db6b6e..afc26a4 100644
--- a/chrome/browser/ui/views/constrained_window_views_browsertest.cc
+++ b/chrome/browser/ui/views/constrained_window_views_browsertest.cc
@@ -365,10 +365,9 @@ void ForwardKeyEvent(content::RenderViewHost* host, ui::KeyboardCode key_code) {
#if defined(OS_WIN)
MSG native_key_event = { NULL, WM_KEYDOWN, key_code, 0 };
#elif defined(USE_X11)
- XEvent x_event;
- ui::InitXKeyEventForTesting(
- ui::ET_KEY_PRESSED, key_code, ui::EF_NONE, &x_event);
- XEvent* native_key_event = &x_event;
+ ui::ScopedXI2Event x_event;
+ x_event.InitKeyEvent(ui::ET_KEY_PRESSED, key_code, ui::EF_NONE);
+ XEvent* native_key_event = x_event;
#endif
#if defined(USE_AURA)
diff --git a/content/browser/renderer_host/web_input_event_aura_unittest.cc b/content/browser/renderer_host/web_input_event_aura_unittest.cc
index 9154cfb..d67d0cd 100644
--- a/content/browser/renderer_host/web_input_event_aura_unittest.cc
+++ b/content/browser/renderer_host/web_input_event_aura_unittest.cc
@@ -21,25 +21,19 @@ namespace content {
// crbug.com/127142
TEST(WebInputEventAuraTest, TestMakeWebKeyboardEvent) {
#if defined(USE_X11)
- XEvent xev;
+ ui::ScopedXI2Event xev;
{
// Press Ctrl.
- ui::InitXKeyEventForTesting(ui::ET_KEY_PRESSED,
- ui::VKEY_CONTROL,
- 0, // X does not set ControlMask for KeyPress.
- &xev);
- ui::KeyEvent event(&xev, false /* is_char */);
+ xev.InitKeyEvent(ui::ET_KEY_PRESSED, ui::VKEY_CONTROL, 0);
+ ui::KeyEvent event(xev, false /* is_char */);
blink::WebKeyboardEvent webkit_event = MakeWebKeyboardEvent(&event);
// However, modifier bit for Control in |webkit_event| should be set.
EXPECT_EQ(webkit_event.modifiers, blink::WebInputEvent::ControlKey);
}
{
// Release Ctrl.
- ui::InitXKeyEventForTesting(ui::ET_KEY_RELEASED,
- ui::VKEY_CONTROL,
- ControlMask, // X sets the mask for KeyRelease.
- &xev);
- ui::KeyEvent event(&xev, false /* is_char */);
+ xev.InitKeyEvent(ui::ET_KEY_RELEASED, ui::VKEY_CONTROL, ControlMask);
+ ui::KeyEvent event(xev, false /* is_char */);
blink::WebKeyboardEvent webkit_event = MakeWebKeyboardEvent(&event);
// However, modifier bit for Control in |webkit_event| shouldn't be set.
EXPECT_EQ(webkit_event.modifiers, 0);
@@ -50,27 +44,23 @@ TEST(WebInputEventAuraTest, TestMakeWebKeyboardEvent) {
// Checks that MakeWebKeyboardEvent returns a correct windowsKeyCode.
TEST(WebInputEventAuraTest, TestMakeWebKeyboardEventWindowsKeyCode) {
#if defined(USE_X11)
- XEvent xev;
+ ui::ScopedXI2Event xev;
{
// Press left Ctrl.
- ui::InitXKeyEventForTesting(ui::ET_KEY_PRESSED,
- ui::VKEY_CONTROL,
- 0, // X does not set ControlMask for KeyPress.
- &xev);
- xev.xkey.keycode = XKeysymToKeycode(gfx::GetXDisplay(), XK_Control_L);
- ui::KeyEvent event(&xev, false /* is_char */);
+ xev.InitKeyEvent(ui::ET_KEY_PRESSED, ui::VKEY_CONTROL, 0);
+ XEvent* xevent = xev;
+ xevent->xkey.keycode = XKeysymToKeycode(gfx::GetXDisplay(), XK_Control_L);
+ ui::KeyEvent event(xev, false /* is_char */);
blink::WebKeyboardEvent webkit_event = MakeWebKeyboardEvent(&event);
// ui::VKEY_LCONTROL, instead of ui::VKEY_CONTROL, should be filled.
EXPECT_EQ(ui::VKEY_LCONTROL, webkit_event.windowsKeyCode);
}
{
// Press right Ctrl.
- ui::InitXKeyEventForTesting(ui::ET_KEY_PRESSED,
- ui::VKEY_CONTROL,
- 0, // X does not set ControlMask for KeyPress.
- &xev);
- xev.xkey.keycode = XKeysymToKeycode(gfx::GetXDisplay(), XK_Control_R);
- ui::KeyEvent event(&xev, false /* is_char */);
+ xev.InitKeyEvent(ui::ET_KEY_PRESSED, ui::VKEY_CONTROL, 0);
+ XEvent* xevent = xev;
+ xevent->xkey.keycode = XKeysymToKeycode(gfx::GetXDisplay(), XK_Control_R);
+ ui::KeyEvent event(xev, false /* is_char */);
blink::WebKeyboardEvent webkit_event = MakeWebKeyboardEvent(&event);
// ui::VKEY_RCONTROL, instead of ui::VKEY_CONTROL, should be filled.
EXPECT_EQ(ui::VKEY_RCONTROL, webkit_event.windowsKeyCode);
diff --git a/content/renderer/render_view_browsertest.cc b/content/renderer/render_view_browsertest.cc
index 950ee35..40a99ee 100644
--- a/content/renderer/render_view_browsertest.cc
+++ b/content/renderer/render_view_browsertest.cc
@@ -194,30 +194,25 @@ class RenderViewImplTest : public RenderViewTest {
CHECK(output);
const int flags = ConvertMockKeyboardModifier(modifiers);
- XEvent xevent1;
- InitXKeyEventForTesting(ui::ET_KEY_PRESSED,
- static_cast<ui::KeyboardCode>(key_code),
- flags,
- &xevent1);
- ui::KeyEvent event1(&xevent1, false);
+ ui::ScopedXI2Event xevent;
+ xevent.InitKeyEvent(ui::ET_KEY_PRESSED,
+ static_cast<ui::KeyboardCode>(key_code),
+ flags);
+ ui::KeyEvent event1(xevent, false);
NativeWebKeyboardEvent keydown_event(&event1);
SendNativeKeyEvent(keydown_event);
- XEvent xevent2;
- InitXKeyEventForTesting(ui::ET_KEY_PRESSED,
- static_cast<ui::KeyboardCode>(key_code),
- flags,
- &xevent2);
- ui::KeyEvent event2(&xevent2, true);
+ xevent.InitKeyEvent(ui::ET_KEY_PRESSED,
+ static_cast<ui::KeyboardCode>(key_code),
+ flags);
+ ui::KeyEvent event2(xevent, true);
NativeWebKeyboardEvent char_event(&event2);
SendNativeKeyEvent(char_event);
- XEvent xevent3;
- InitXKeyEventForTesting(ui::ET_KEY_RELEASED,
- static_cast<ui::KeyboardCode>(key_code),
- flags,
- &xevent3);
- ui::KeyEvent event3(&xevent3, false);
+ xevent.InitKeyEvent(ui::ET_KEY_RELEASED,
+ static_cast<ui::KeyboardCode>(key_code),
+ flags);
+ ui::KeyEvent event3(xevent, false);
NativeWebKeyboardEvent keyup_event(&event3);
SendNativeKeyEvent(keyup_event);
diff --git a/ui/aura/root_window_host_x11_unittest.cc b/ui/aura/root_window_host_x11_unittest.cc
index 36b6976..871ca68 100644
--- a/ui/aura/root_window_host_x11_unittest.cc
+++ b/ui/aura/root_window_host_x11_unittest.cc
@@ -116,34 +116,35 @@ TEST_F(RootWindowHostX11Test, DispatchTouchEventToOneRootWindow) {
EXPECT_EQ(ui::ET_UNKNOWN, delegate->last_touch_type());
EXPECT_EQ(-1, delegate->last_touch_id());
+ ui::ScopedXI2Event scoped_xevent;
#if defined(OS_CHROMEOS)
// This touch is out of bounds.
- ui::ScopedXI2Event event1(ui::CreateTouchEventForTest(
- 0, XI_TouchBegin, 5, gfx::Point(1500, 2500), valuators));
- root_window_host->Dispatch(event1);
+ scoped_xevent.InitTouchEvent(
+ 0, XI_TouchBegin, 5, gfx::Point(1500, 2500), valuators);
+ root_window_host->Dispatch(scoped_xevent);
EXPECT_EQ(ui::ET_UNKNOWN, delegate->last_touch_type());
EXPECT_EQ(-1, delegate->last_touch_id());
EXPECT_EQ(gfx::Point(0, 0), delegate->last_touch_location());
#endif // defined(OS_CHROMEOS)
// Following touchs are within bounds and are passed to delegate.
- ui::ScopedXI2Event event2(ui::CreateTouchEventForTest(
- 0, XI_TouchBegin, 5, gfx::Point(1500, 1500), valuators));
- root_window_host->Dispatch(event2);
+ scoped_xevent.InitTouchEvent(
+ 0, XI_TouchBegin, 5, gfx::Point(1500, 1500), valuators);
+ root_window_host->Dispatch(scoped_xevent);
EXPECT_EQ(ui::ET_TOUCH_PRESSED, delegate->last_touch_type());
EXPECT_EQ(0, delegate->last_touch_id());
EXPECT_EQ(gfx::Point(1500, 1500), delegate->last_touch_location());
- ui::ScopedXI2Event event3(ui::CreateTouchEventForTest(
- 0, XI_TouchUpdate, 5, gfx::Point(1500, 1600), valuators));
- root_window_host->Dispatch(event3);
+ scoped_xevent.InitTouchEvent(
+ 0, XI_TouchUpdate, 5, gfx::Point(1500, 1600), valuators);
+ root_window_host->Dispatch(scoped_xevent);
EXPECT_EQ(ui::ET_TOUCH_MOVED, delegate->last_touch_type());
EXPECT_EQ(0, delegate->last_touch_id());
EXPECT_EQ(gfx::Point(1500, 1600), delegate->last_touch_location());
- ui::ScopedXI2Event event4(ui::CreateTouchEventForTest(
- 0, XI_TouchEnd, 5, gfx::Point(1500, 1600), valuators));
- root_window_host->Dispatch(event4);
+ scoped_xevent.InitTouchEvent(
+ 0, XI_TouchEnd, 5, gfx::Point(1500, 1600), valuators);
+ root_window_host->Dispatch(scoped_xevent);
EXPECT_EQ(ui::ET_TOUCH_RELEASED, delegate->last_touch_type());
EXPECT_EQ(0, delegate->last_touch_id());
EXPECT_EQ(gfx::Point(1500, 1600), delegate->last_touch_location());
@@ -190,10 +191,11 @@ TEST_F(RootWindowHostX11Test, DispatchTouchEventToTwoRootWindow) {
EXPECT_EQ(-1, delegate2->last_touch_id());
// 2 Touch events are targeted at the second RootWindowHost.
- ui::ScopedXI2Event touch1_begin(ui::CreateTouchEventForTest(
- 0, XI_TouchBegin, 5, gfx::Point(1500, 2500), valuators));
- root_window_host1->Dispatch(touch1_begin);
- root_window_host2->Dispatch(touch1_begin);
+ ui::ScopedXI2Event scoped_xevent;
+ scoped_xevent.InitTouchEvent(
+ 0, XI_TouchBegin, 5, gfx::Point(1500, 2500), valuators);
+ root_window_host1->Dispatch(scoped_xevent);
+ root_window_host2->Dispatch(scoped_xevent);
EXPECT_EQ(ui::ET_UNKNOWN, delegate1->last_touch_type());
EXPECT_EQ(-1, delegate1->last_touch_id());
EXPECT_EQ(gfx::Point(0, 0), delegate1->last_touch_location());
@@ -202,10 +204,10 @@ TEST_F(RootWindowHostX11Test, DispatchTouchEventToTwoRootWindow) {
EXPECT_EQ(gfx::Point(1500, 2500 - host2_y_offset),
delegate2->last_touch_location());
- ui::ScopedXI2Event touch2_begin(ui::CreateTouchEventForTest(
- 0, XI_TouchBegin, 6, gfx::Point(1600, 2600), valuators));
- root_window_host1->Dispatch(touch2_begin);
- root_window_host2->Dispatch(touch2_begin);
+ scoped_xevent.InitTouchEvent(
+ 0, XI_TouchBegin, 6, gfx::Point(1600, 2600), valuators);
+ root_window_host1->Dispatch(scoped_xevent);
+ root_window_host2->Dispatch(scoped_xevent);
EXPECT_EQ(ui::ET_UNKNOWN, delegate1->last_touch_type());
EXPECT_EQ(-1, delegate1->last_touch_id());
EXPECT_EQ(gfx::Point(0, 0), delegate1->last_touch_location());
@@ -214,10 +216,10 @@ TEST_F(RootWindowHostX11Test, DispatchTouchEventToTwoRootWindow) {
EXPECT_EQ(gfx::Point(1600, 2600 - host2_y_offset),
delegate2->last_touch_location());
- ui::ScopedXI2Event touch1_move(ui::CreateTouchEventForTest(
- 0, XI_TouchUpdate, 5, gfx::Point(1500, 2550), valuators));
- root_window_host1->Dispatch(touch1_move);
- root_window_host2->Dispatch(touch1_move);
+ scoped_xevent.InitTouchEvent(
+ 0, XI_TouchUpdate, 5, gfx::Point(1500, 2550), valuators);
+ root_window_host1->Dispatch(scoped_xevent);
+ root_window_host2->Dispatch(scoped_xevent);
EXPECT_EQ(ui::ET_UNKNOWN, delegate1->last_touch_type());
EXPECT_EQ(-1, delegate1->last_touch_id());
EXPECT_EQ(gfx::Point(0, 0), delegate1->last_touch_location());
@@ -226,10 +228,10 @@ TEST_F(RootWindowHostX11Test, DispatchTouchEventToTwoRootWindow) {
EXPECT_EQ(gfx::Point(1500, 2550 - host2_y_offset),
delegate2->last_touch_location());
- ui::ScopedXI2Event touch2_move(ui::CreateTouchEventForTest(
- 0, XI_TouchUpdate, 6, gfx::Point(1600, 2650), valuators));
- root_window_host1->Dispatch(touch2_move);
- root_window_host2->Dispatch(touch2_move);
+ scoped_xevent.InitTouchEvent(
+ 0, XI_TouchUpdate, 6, gfx::Point(1600, 2650), valuators);
+ root_window_host1->Dispatch(scoped_xevent);
+ root_window_host2->Dispatch(scoped_xevent);
EXPECT_EQ(ui::ET_UNKNOWN, delegate1->last_touch_type());
EXPECT_EQ(-1, delegate1->last_touch_id());
EXPECT_EQ(gfx::Point(0, 0), delegate1->last_touch_location());
@@ -238,10 +240,10 @@ TEST_F(RootWindowHostX11Test, DispatchTouchEventToTwoRootWindow) {
EXPECT_EQ(gfx::Point(1600, 2650 - host2_y_offset),
delegate2->last_touch_location());
- ui::ScopedXI2Event touch1_end(ui::CreateTouchEventForTest(
- 0, XI_TouchEnd, 5, gfx::Point(1500, 2550), valuators));
- root_window_host1->Dispatch(touch1_end);
- root_window_host2->Dispatch(touch1_end);
+ scoped_xevent.InitTouchEvent(
+ 0, XI_TouchEnd, 5, gfx::Point(1500, 2550), valuators);
+ root_window_host1->Dispatch(scoped_xevent);
+ root_window_host2->Dispatch(scoped_xevent);
EXPECT_EQ(ui::ET_UNKNOWN, delegate1->last_touch_type());
EXPECT_EQ(-1, delegate1->last_touch_id());
EXPECT_EQ(gfx::Point(0, 0), delegate1->last_touch_location());
@@ -250,10 +252,10 @@ TEST_F(RootWindowHostX11Test, DispatchTouchEventToTwoRootWindow) {
EXPECT_EQ(gfx::Point(1500, 2550 - host2_y_offset),
delegate2->last_touch_location());
- ui::ScopedXI2Event touch2_end(ui::CreateTouchEventForTest(
- 0, XI_TouchEnd, 6, gfx::Point(1600, 2650), valuators));
- root_window_host1->Dispatch(touch2_end);
- root_window_host2->Dispatch(touch2_end);
+ scoped_xevent.InitTouchEvent(
+ 0, XI_TouchEnd, 6, gfx::Point(1600, 2650), valuators);
+ root_window_host1->Dispatch(scoped_xevent);
+ root_window_host2->Dispatch(scoped_xevent);
EXPECT_EQ(ui::ET_UNKNOWN, delegate1->last_touch_type());
EXPECT_EQ(-1, delegate1->last_touch_id());
EXPECT_EQ(gfx::Point(0, 0), delegate1->last_touch_location());
diff --git a/ui/base/ime/input_method_ibus_unittest.cc b/ui/base/ime/input_method_ibus_unittest.cc
index 0c28ed4..248270b 100644
--- a/ui/base/ime/input_method_ibus_unittest.cc
+++ b/ui/base/ime/input_method_ibus_unittest.cc
@@ -910,9 +910,9 @@ class InputMethodIBusKeyEventTest : public InputMethodIBusTest {
TEST_F(InputMethodIBusKeyEventTest, KeyEventDelayResponseTest) {
const int kXFlags = ShiftMask;
const unsigned int kIbusFlags = ui::EF_SHIFT_DOWN;
- XEvent xevent = {};
- ui::InitXKeyEventForTesting(ui::ET_KEY_PRESSED, ui::VKEY_A, kXFlags, &xevent);
- const ui::KeyEvent event(&xevent, true);
+ ScopedXI2Event xevent;
+ xevent.InitKeyEvent(ui::ET_KEY_PRESSED, ui::VKEY_A, kXFlags);
+ const ui::KeyEvent event(xevent, true);
// Do key event.
input_type_ = TEXT_INPUT_TYPE_TEXT;
@@ -938,7 +938,7 @@ TEST_F(InputMethodIBusKeyEventTest, KeyEventDelayResponseTest) {
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(IsEqualXKeyEvent(*xevent, *(stored_event->native_event())));
EXPECT_TRUE(ime_->process_key_event_post_ime_args().handled);
}
@@ -949,9 +949,9 @@ TEST_F(InputMethodIBusKeyEventTest, MultiKeyEventDelayResponseTest) {
const int kXFlags = ShiftMask;
const unsigned int kIbusFlags = ui::EF_SHIFT_DOWN;
- XEvent xevent = {};
- ui::InitXKeyEventForTesting(ui::ET_KEY_PRESSED, ui::VKEY_B, kXFlags, &xevent);
- const ui::KeyEvent event(&xevent, true);
+ ScopedXI2Event xevent;
+ xevent.InitKeyEvent(ui::ET_KEY_PRESSED, ui::VKEY_B, kXFlags);
+ const ui::KeyEvent event(xevent, true);
// Do key event.
ime_->DispatchKeyEvent(event);
@@ -967,10 +967,9 @@ TEST_F(InputMethodIBusKeyEventTest, MultiKeyEventDelayResponseTest) {
mock_ime_engine_handler_->last_passed_callback();
// Do key event again.
- XEvent xevent2 = {};
- ui::InitXKeyEventForTesting(ui::ET_KEY_PRESSED, ui::VKEY_C, kXFlags,
- &xevent2);
- const ui::KeyEvent event2(&xevent2, true);
+ ScopedXI2Event xevent2;
+ xevent2.InitKeyEvent(ui::ET_KEY_PRESSED, ui::VKEY_C, kXFlags);
+ const ui::KeyEvent event2(xevent2, true);
ime_->DispatchKeyEvent(event2);
EXPECT_EQ("C",
@@ -994,7 +993,7 @@ TEST_F(InputMethodIBusKeyEventTest, MultiKeyEventDelayResponseTest) {
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(IsEqualXKeyEvent(*xevent, *(stored_event->native_event())));
EXPECT_TRUE(ime_->process_key_event_post_ime_args().handled);
// Do callback for second key event.
@@ -1004,15 +1003,15 @@ TEST_F(InputMethodIBusKeyEventTest, MultiKeyEventDelayResponseTest) {
EXPECT_EQ(2, ime_->process_key_event_post_ime_call_count());
stored_event = ime_->process_key_event_post_ime_args().event;
EXPECT_TRUE(stored_event->HasNativeEvent());
- EXPECT_TRUE(IsEqualXKeyEvent(xevent2, *(stored_event->native_event())));
+ EXPECT_TRUE(IsEqualXKeyEvent(*xevent2, *(stored_event->native_event())));
EXPECT_FALSE(ime_->process_key_event_post_ime_args().handled);
}
TEST_F(InputMethodIBusKeyEventTest, KeyEventDelayResponseResetTest) {
const int kXFlags = ShiftMask;
- XEvent xevent = {};
- ui::InitXKeyEventForTesting(ui::ET_KEY_PRESSED, ui::VKEY_A, kXFlags, &xevent);
- const ui::KeyEvent event(&xevent, true);
+ ScopedXI2Event xevent;
+ xevent.InitKeyEvent(ui::ET_KEY_PRESSED, ui::VKEY_A, kXFlags);
+ const ui::KeyEvent event(xevent, true);
// Do key event.
input_type_ = TEXT_INPUT_TYPE_TEXT;
diff --git a/ui/events/event_unittest.cc b/ui/events/event_unittest.cc
index e70160b..7fbceca 100644
--- a/ui/events/event_unittest.cc
+++ b/ui/events/event_unittest.cc
@@ -26,9 +26,9 @@ TEST(EventTest, NativeEvent) {
KeyEvent keyev(native_event, false);
EXPECT_TRUE(keyev.HasNativeEvent());
#elif defined(USE_X11)
- scoped_ptr<XEvent> native_event(new XEvent);
- InitXKeyEventForTesting(ET_KEY_RELEASED, VKEY_A, 0, native_event.get());
- KeyEvent keyev(native_event.get(), false);
+ ScopedXI2Event event;
+ event.InitKeyEvent(ET_KEY_RELEASED, VKEY_A, 0);
+ KeyEvent keyev(event, false);
EXPECT_TRUE(keyev.HasNativeEvent());
#endif
}
@@ -43,15 +43,13 @@ TEST(EventTest, GetCharacter) {
#if defined(USE_X11)
// For X11, test the functions with native_event() as well. crbug.com/107837
- scoped_ptr<XEvent> native_event(new XEvent);
-
- InitXKeyEventForTesting(ET_KEY_PRESSED, VKEY_RETURN, EF_CONTROL_DOWN,
- native_event.get());
- KeyEvent keyev3(native_event.get(), false);
+ ScopedXI2Event event;
+ event.InitKeyEvent(ET_KEY_PRESSED, VKEY_RETURN, EF_CONTROL_DOWN);
+ KeyEvent keyev3(event, false);
EXPECT_EQ(10, keyev3.GetCharacter());
- InitXKeyEventForTesting(ET_KEY_PRESSED, VKEY_RETURN, 0, native_event.get());
- KeyEvent keyev4(native_event.get(), false);
+ event.InitKeyEvent(ET_KEY_PRESSED, VKEY_RETURN, 0);
+ KeyEvent keyev4(event, false);
EXPECT_EQ(13, keyev4.GetCharacter());
#endif
}
@@ -195,46 +193,35 @@ TEST(EventTest, KeyEventDirectUnicode) {
TEST(EventTest, NormalizeKeyEventFlags) {
#if defined(USE_X11)
// Normalize flags when KeyEvent is created from XEvent.
+ ScopedXI2Event event;
{
- scoped_ptr<XEvent> native_event(new XEvent);
- InitXKeyEventForTesting(ET_KEY_PRESSED, VKEY_SHIFT, EF_SHIFT_DOWN,
- native_event.get());
- KeyEvent keyev(native_event.get(), false);
+ event.InitKeyEvent(ET_KEY_PRESSED, VKEY_SHIFT, EF_SHIFT_DOWN);
+ KeyEvent keyev(event, false);
EXPECT_EQ(EF_SHIFT_DOWN, keyev.flags());
}
{
- scoped_ptr<XEvent> native_event(new XEvent);
- InitXKeyEventForTesting(ET_KEY_RELEASED, VKEY_SHIFT, EF_SHIFT_DOWN,
- native_event.get());
- KeyEvent keyev(native_event.get(), false);
+ event.InitKeyEvent(ET_KEY_RELEASED, VKEY_SHIFT, EF_SHIFT_DOWN);
+ KeyEvent keyev(event, false);
EXPECT_EQ(EF_NONE, keyev.flags());
}
{
- scoped_ptr<XEvent> native_event(new XEvent);
- InitXKeyEventForTesting(ET_KEY_PRESSED, VKEY_CONTROL, EF_CONTROL_DOWN,
- native_event.get());
- KeyEvent keyev(native_event.get(), false);
+ event.InitKeyEvent(ET_KEY_PRESSED, VKEY_CONTROL, EF_CONTROL_DOWN);
+ KeyEvent keyev(event, false);
EXPECT_EQ(EF_CONTROL_DOWN, keyev.flags());
}
{
- scoped_ptr<XEvent> native_event(new XEvent);
- InitXKeyEventForTesting(ET_KEY_RELEASED, VKEY_CONTROL, EF_CONTROL_DOWN,
- native_event.get());
- KeyEvent keyev(native_event.get(), false);
+ event.InitKeyEvent(ET_KEY_RELEASED, VKEY_CONTROL, EF_CONTROL_DOWN);
+ KeyEvent keyev(event, false);
EXPECT_EQ(EF_NONE, keyev.flags());
}
{
- scoped_ptr<XEvent> native_event(new XEvent);
- InitXKeyEventForTesting(ET_KEY_PRESSED, VKEY_MENU, EF_ALT_DOWN,
- native_event.get());
- KeyEvent keyev(native_event.get(), false);
+ event.InitKeyEvent(ET_KEY_PRESSED, VKEY_MENU, EF_ALT_DOWN);
+ KeyEvent keyev(event, false);
EXPECT_EQ(EF_ALT_DOWN, keyev.flags());
}
{
- scoped_ptr<XEvent> native_event(new XEvent);
- InitXKeyEventForTesting(ET_KEY_RELEASED, VKEY_MENU, EF_ALT_DOWN,
- native_event.get());
- KeyEvent keyev(native_event.get(), false);
+ event.InitKeyEvent(ET_KEY_RELEASED, VKEY_MENU, EF_ALT_DOWN);
+ KeyEvent keyev(event, false);
EXPECT_EQ(EF_NONE, keyev.flags());
}
#endif
diff --git a/ui/events/test/events_test_utils_x11.cc b/ui/events/test/events_test_utils_x11.cc
index 4849f16..9b2cc5b 100644
--- a/ui/events/test/events_test_utils_x11.cc
+++ b/ui/events/test/events_test_utils_x11.cc
@@ -26,7 +26,6 @@ const int kScrollValuatorMap[kScrollValuatorNum][4] = {
{ 4, ui::DeviceDataManager::DT_CMT_FINGER_COUNT, 0, 3},
};
-#if defined(USE_XI2_MT)
const int kTouchValuatorNum = 3;
const int kTouchValuatorMap[kTouchValuatorNum][4] = {
// { valuator_index, valuator_type, min_val, max_val }
@@ -34,7 +33,6 @@ const int kTouchValuatorMap[kTouchValuatorNum][4] = {
{ 1, ui::DeviceDataManager::DT_TOUCH_ORIENTATION, 0, 1},
{ 2, ui::DeviceDataManager::DT_TOUCH_PRESSURE, 0, 1000},
};
-#endif
// Converts ui::EventType to state for X*Events.
unsigned int XEventState(int flags) {
@@ -138,102 +136,123 @@ XEvent* CreateXInput2Event(int deviceid,
namespace ui {
-void InitXKeyEventForTesting(EventType type,
- KeyboardCode key_code,
- int flags,
- XEvent* event) {
- CHECK(event);
- XDisplay* display = gfx::GetXDisplay();
- XKeyEvent key_event;
- key_event.type = XKeyEventType(type);
- CHECK_NE(0, key_event.type);
- key_event.serial = 0;
- key_event.send_event = 0;
- key_event.display = display;
- key_event.time = 0;
- key_event.window = 0;
- key_event.root = 0;
- key_event.subwindow = 0;
- key_event.x = 0;
- key_event.y = 0;
- key_event.x_root = 0;
- key_event.y_root = 0;
- key_event.state = XEventState(flags);
- key_event.keycode = XKeyEventKeyCode(key_code, flags, display);
- key_event.same_screen = 1;
- event->type = key_event.type;
- event->xkey = key_event;
+ScopedXI2Event::ScopedXI2Event() {}
+ScopedXI2Event::~ScopedXI2Event() {
+ Cleanup();
}
-void InitXButtonEventForTesting(EventType type,
- int flags,
- XEvent* event) {
- CHECK(event);
+void ScopedXI2Event::InitKeyEvent(EventType type,
+ KeyboardCode key_code,
+ int flags) {
+ Cleanup();
XDisplay* display = gfx::GetXDisplay();
- XButtonEvent button_event;
- button_event.type = XButtonEventType(type);
- CHECK_NE(0, button_event.type);
- button_event.serial = 0;
- button_event.send_event = 0;
- button_event.display = display;
- button_event.time = 0;
- button_event.window = 0;
- button_event.root = 0;
- button_event.subwindow = 0;
- button_event.x = 0;
- button_event.y = 0;
- button_event.x_root = 0;
- button_event.y_root = 0;
- button_event.state = XEventState(flags);
- button_event.button = XButtonEventButton(type, flags);
- button_event.same_screen = 1;
- event->type = button_event.type;
- event->xbutton = button_event;
+ event_.reset(new XEvent);
+ memset(event_.get(), 0, sizeof(XEvent));
+ event_->type = XKeyEventType(type);
+ CHECK_NE(0, event_->type);
+ event_->xkey.serial = 0;
+ event_->xkey.send_event = 0;
+ event_->xkey.display = display;
+ event_->xkey.time = 0;
+ event_->xkey.window = 0;
+ event_->xkey.root = 0;
+ event_->xkey.subwindow = 0;
+ event_->xkey.x = 0;
+ event_->xkey.y = 0;
+ event_->xkey.x_root = 0;
+ event_->xkey.y_root = 0;
+ event_->xkey.state = XEventState(flags);
+ event_->xkey.keycode = XKeyEventKeyCode(key_code, flags, display);
+ event_->xkey.same_screen = 1;
+}
+
+void ScopedXI2Event::InitButtonEvent(EventType type,
+ int flags) {
+ Cleanup();
+ event_.reset(new XEvent);
+ memset(event_.get(), 0, sizeof(XEvent));
+ event_->type = XButtonEventType(type);
+ CHECK_NE(0, event_->type);
+ event_->xbutton.serial = 0;
+ event_->xbutton.send_event = 0;
+ event_->xbutton.display = gfx::GetXDisplay();
+ event_->xbutton.time = 0;
+ event_->xbutton.window = 0;
+ event_->xbutton.root = 0;
+ event_->xbutton.subwindow = 0;
+ event_->xbutton.x = 0;
+ event_->xbutton.y = 0;
+ event_->xbutton.x_root = 0;
+ event_->xbutton.y_root = 0;
+ event_->xbutton.state = XEventState(flags);
+ event_->xbutton.button = XButtonEventButton(type, flags);
+ event_->xbutton.same_screen = 1;
}
-void InitXMouseWheelEventForTesting(int wheel_delta,
- int flags,
- XEvent* event) {
- InitXButtonEventForTesting(ui::ET_MOUSEWHEEL, flags, event);
+void ScopedXI2Event::InitMouseWheelEvent(int wheel_delta,
+ int flags) {
+ InitButtonEvent(ui::ET_MOUSEWHEEL, flags);
// MouseWheelEvents are not taking horizontal scrolls into account
// at the moment.
- event->xbutton.button = wheel_delta > 0 ? Button4 : Button5;
+ event_->xbutton.button = wheel_delta > 0 ? Button4 : Button5;
}
-ScopedXI2Event::ScopedXI2Event(XEvent* event) : event_(event) {
-}
+void ScopedXI2Event::InitScrollEvent(int deviceid,
+ int x_offset,
+ int y_offset,
+ int x_offset_ordinal,
+ int y_offset_ordinal,
+ int finger_count) {
+ Cleanup();
+ event_.reset(CreateXInput2Event(deviceid, XI_Motion, deviceid, gfx::Point()));
-ScopedXI2Event::~ScopedXI2Event() {
+ int valuator_data[kScrollValuatorNum] =
+ { x_offset, y_offset, x_offset_ordinal, y_offset_ordinal, finger_count};
XIDeviceEvent* xiev =
static_cast<XIDeviceEvent*>(event_->xcookie.data);
- if (xiev) {
- delete[] xiev->valuators.mask;
- delete[] xiev->valuators.values;
- delete xiev;
- }
-}
-
-XEvent* CreateScrollEventForTest(
- int deviceid,
- int x_offset,
- int y_offset,
- int x_offset_ordinal,
- int y_offset_ordinal,
- int finger_count) {
- XEvent* event = CreateXInput2Event(
- deviceid, XI_Motion, deviceid, gfx::Point(0, 0));
- int valuator_data[kScrollValuatorNum] =
- { x_offset, y_offset, x_offset_ordinal, y_offset_ordinal, finger_count };
- XIDeviceEvent* xiev =
- static_cast<XIDeviceEvent*>(event->xcookie.data);
InitValuatorsForXIDeviceEvent(xiev, kScrollValuatorNum);
for(int i = 0; i < kScrollValuatorNum; i++) {
XISetMask(xiev->valuators.mask, i);
xiev->valuators.values[i] = valuator_data[i];
}
+}
- return event;
+void ScopedXI2Event::InitTouchEvent(int deviceid,
+ int evtype,
+ int tracking_id,
+ const gfx::Point& location,
+ const std::vector<Valuator>& valuators) {
+ Cleanup();
+ event_.reset(CreateXInput2Event(
+ deviceid, evtype, tracking_id, location));
+
+ XIDeviceEvent* xiev =
+ static_cast<XIDeviceEvent*>(event_->xcookie.data);
+ InitValuatorsForXIDeviceEvent(xiev, valuators.size());
+ int val_count = 0;
+ for (int i = 0; i < kTouchValuatorNum; i++) {
+ for (size_t j = 0; j < valuators.size(); j++) {
+ if (valuators[j].data_type == kTouchValuatorMap[i][1]) {
+ XISetMask(xiev->valuators.mask, kTouchValuatorMap[i][0]);
+ xiev->valuators.values[val_count++] = valuators[j].value;
+ }
+ }
+ }
+
+}
+
+void ScopedXI2Event::Cleanup() {
+ if (event_.get() && event_->type == GenericEvent) {
+ XIDeviceEvent* xiev =
+ static_cast<XIDeviceEvent*>(event_->xcookie.data);
+ if (xiev) {
+ delete[] xiev->valuators.mask;
+ delete[] xiev->valuators.values;
+ delete xiev;
+ }
+ }
+ event_.reset();
}
void SetUpScrollDeviceForTest(unsigned int deviceid) {
@@ -254,32 +273,6 @@ XEvent* CreateScrollEventForTest(
}
}
-#if defined(USE_XI2_MT)
-
-XEvent* CreateTouchEventForTest(int deviceid,
- int evtype,
- int tracking_id,
- const gfx::Point& location,
- const std::vector<Valuator>& valuators) {
- XEvent* event = CreateXInput2Event(
- deviceid, evtype, tracking_id, location);
-
- XIDeviceEvent* xiev =
- static_cast<XIDeviceEvent*>(event->xcookie.data);
- InitValuatorsForXIDeviceEvent(xiev, valuators.size());
- int val_count = 0;
- for (int i = 0; i < kTouchValuatorNum; i++) {
- for(size_t j = 0; j < valuators.size(); j++) {
- if (valuators[j].data_type == kTouchValuatorMap[i][1]) {
- XISetMask(xiev->valuators.mask, kTouchValuatorMap[i][0]);
- xiev->valuators.values[val_count++] = valuators[j].value;
- }
- }
- }
-
- return event;
-}
-
void SetupTouchDevicesForTest(const std::vector<unsigned int>& devices) {
std::vector<unsigned int> empty_list;
TouchFactory::GetInstance()->SetTouchDeviceForTest(devices);
@@ -297,6 +290,4 @@ void SetupTouchDevicesForTest(const std::vector<unsigned int>& devices) {
}
}
-#endif // defined(USE_XI2_MT)
-
} // namespace ui
diff --git a/ui/events/test/events_test_utils_x11.h b/ui/events/test/events_test_utils_x11.h
index 0fffd22..4faa8f4 100644
--- a/ui/events/test/events_test_utils_x11.h
+++ b/ui/events/test/events_test_utils_x11.h
@@ -26,72 +26,50 @@ struct Valuator {
class ScopedXI2Event {
public:
- explicit ScopedXI2Event(XEvent* event);
+ ScopedXI2Event();
~ScopedXI2Event();
operator XEvent*() { return event_.get(); }
+ // Initializes a XEvent with for the appropriate type with the specified data.
+ // Note that ui::EF_ flags should be passed as |flags|, not the native ones in
+ // <X11/X.h>.
+ void InitKeyEvent(EventType type,
+ KeyboardCode key_code,
+ int flags);
+
+ void InitButtonEvent(EventType type,
+ int flags);
+
+ void InitMouseWheelEvent(int wheel_delta,
+ int flags);
+
+ void InitScrollEvent(int deviceid,
+ int x_offset,
+ int y_offset,
+ int x_offset_ordinal,
+ int y_offset_ordinal,
+ int finger_count);
+
+ void InitTouchEvent(int deviceid,
+ int evtype,
+ int tracking_id,
+ const gfx::Point& location,
+ const std::vector<Valuator>& valuators);
+
private:
+ void Cleanup();
+
scoped_ptr<XEvent> event_;
DISALLOW_COPY_AND_ASSIGN(ScopedXI2Event);
};
-// Initializes a XEvent that holds XKeyEvent for testing. Note that ui::EF_
-// flags should be passed as |flags|, not the native ones in <X11/X.h>.
-void InitXKeyEventForTesting(EventType type,
- KeyboardCode key_code,
- int flags,
- XEvent* event);
-
-// Initializes a XEvent that holds XButtonEvent for testing. Note that ui::EF_
-// flags should be passed as |flags|, not the native ones in <X11/X.h>.
-void InitXButtonEventForTesting(EventType type,
- int flags,
- XEvent* event);
-
-// Initializes an XEvent for an Aura MouseWheelEvent. The underlying native
-// event is an XButtonEvent.
-void InitXMouseWheelEventForTesting(int wheel_delta,
- int flags,
- XEvent* event);
-
-// Creates a native scroll event, based on a XInput2Event. The caller is
-// responsible for the ownership of the returned XEvent. Consider wrapping
-// the XEvent in a ScopedXI2Event, as XEvent is purely a struct and simply
-// deleting it will result in dangling pointers.
-XEvent* CreateScrollEventForTest(
- int deviceid,
- int x_offset,
- int y_offset,
- int x_offset_ordinal,
- int y_offset_ordinal,
- int finger_count);
-
-// Creates the native XInput2 based XEvent for an aura scroll event of type
-// ET_SCROLL_FLING_START or ET_SCROLL_FLING_CANCEL. The caller is responsible
-// for the ownership of the returned XEvent.
-XEvent* CreateFlingEventForTest(
- int deviceid,
- int x_velocity,
- int y_velocity,
- int x_velocity_ordinal,
- int y_velocity_ordinal,
- bool is_cancel);
-
// Initializes a test touchpad device for scroll events.
void SetUpScrollDeviceForTest(unsigned int deviceid);
-#if defined(USE_XI2_MT)
-XEvent* CreateTouchEventForTest(
- int deviceid,
- int evtype,
- int tracking_id,
- const gfx::Point& location,
- const std::vector<Valuator>& valuators);
-
+// Initializes a list of touchscreen devices for touch events.
void SetupTouchDevicesForTest(const std::vector<unsigned int>& devices);
-#endif // defined(USE_XI2_MT)
} // namespace ui
diff --git a/ui/events/x/events_x_unittest.cc b/ui/events/x/events_x_unittest.cc
index d8ef85e..643454b 100644
--- a/ui/events/x/events_x_unittest.cc
+++ b/ui/events/x/events_x_unittest.cc
@@ -182,66 +182,67 @@ TEST(EventsXTest, TouchEventBasic) {
valuators.push_back(Valuator(DeviceDataManager::DT_TOUCH_MAJOR, 20));
valuators.push_back(Valuator(DeviceDataManager::DT_TOUCH_ORIENTATION, 0.3f));
valuators.push_back(Valuator(DeviceDataManager::DT_TOUCH_PRESSURE, 100));
- ui::ScopedXI2Event event1(CreateTouchEventForTest(
- 0, XI_TouchBegin, 5, gfx::Point(10, 10), valuators));
- EXPECT_EQ(ui::ET_TOUCH_PRESSED, ui::EventTypeFromNative(event1));
- EXPECT_EQ("10,10", ui::EventLocationFromNative(event1).ToString());
- EXPECT_EQ(GetTouchId(event1), 0);
- EXPECT_EQ(GetTouchRadiusX(event1), 10);
- EXPECT_FLOAT_EQ(GetTouchAngle(event1), 0.15f);
- EXPECT_FLOAT_EQ(GetTouchForce(event1), 0.1f);
+ ui::ScopedXI2Event scoped_xevent;
+ scoped_xevent.InitTouchEvent(
+ 0, XI_TouchBegin, 5, gfx::Point(10, 10), valuators);
+ EXPECT_EQ(ui::ET_TOUCH_PRESSED, ui::EventTypeFromNative(scoped_xevent));
+ EXPECT_EQ("10,10", ui::EventLocationFromNative(scoped_xevent).ToString());
+ EXPECT_EQ(GetTouchId(scoped_xevent), 0);
+ EXPECT_EQ(GetTouchRadiusX(scoped_xevent), 10);
+ EXPECT_FLOAT_EQ(GetTouchAngle(scoped_xevent), 0.15f);
+ EXPECT_FLOAT_EQ(GetTouchForce(scoped_xevent), 0.1f);
// Touch update, with new orientation info.
valuators.clear();
valuators.push_back(Valuator(DeviceDataManager::DT_TOUCH_ORIENTATION, 0.5f));
- ui::ScopedXI2Event event2(CreateTouchEventForTest(
- 0, XI_TouchUpdate, 5, gfx::Point(20, 20), valuators));
- EXPECT_EQ(ui::ET_TOUCH_MOVED, ui::EventTypeFromNative(event2));
- EXPECT_EQ("20,20", ui::EventLocationFromNative(event2).ToString());
- EXPECT_EQ(GetTouchId(event2), 0);
- EXPECT_EQ(GetTouchRadiusX(event2), 10);
- EXPECT_FLOAT_EQ(GetTouchAngle(event2), 0.25f);
- EXPECT_FLOAT_EQ(GetTouchForce(event2), 0.1f);
+ scoped_xevent.InitTouchEvent(
+ 0, XI_TouchUpdate, 5, gfx::Point(20, 20), valuators);
+ EXPECT_EQ(ui::ET_TOUCH_MOVED, ui::EventTypeFromNative(scoped_xevent));
+ EXPECT_EQ("20,20", ui::EventLocationFromNative(scoped_xevent).ToString());
+ EXPECT_EQ(GetTouchId(scoped_xevent), 0);
+ EXPECT_EQ(GetTouchRadiusX(scoped_xevent), 10);
+ EXPECT_FLOAT_EQ(GetTouchAngle(scoped_xevent), 0.25f);
+ EXPECT_FLOAT_EQ(GetTouchForce(scoped_xevent), 0.1f);
// Another touch with tracking id 6, touch id 1.
valuators.clear();
valuators.push_back(Valuator(DeviceDataManager::DT_TOUCH_MAJOR, 100));
valuators.push_back(Valuator(DeviceDataManager::DT_TOUCH_ORIENTATION, 0.9f));
valuators.push_back(Valuator(DeviceDataManager::DT_TOUCH_PRESSURE, 500));
- ui::ScopedXI2Event event3(CreateTouchEventForTest(
- 0, XI_TouchBegin, 6, gfx::Point(200, 200), valuators));
- EXPECT_EQ(ui::ET_TOUCH_PRESSED, ui::EventTypeFromNative(event3));
- EXPECT_EQ("200,200", ui::EventLocationFromNative(event3).ToString());
- EXPECT_EQ(GetTouchId(event3), 1);
- EXPECT_EQ(GetTouchRadiusX(event3), 50);
- EXPECT_FLOAT_EQ(GetTouchAngle(event3), 0.45f);
- EXPECT_FLOAT_EQ(GetTouchForce(event3), 0.5f);
+ scoped_xevent.InitTouchEvent(
+ 0, XI_TouchBegin, 6, gfx::Point(200, 200), valuators);
+ EXPECT_EQ(ui::ET_TOUCH_PRESSED, ui::EventTypeFromNative(scoped_xevent));
+ EXPECT_EQ("200,200", ui::EventLocationFromNative(scoped_xevent).ToString());
+ EXPECT_EQ(GetTouchId(scoped_xevent), 1);
+ EXPECT_EQ(GetTouchRadiusX(scoped_xevent), 50);
+ EXPECT_FLOAT_EQ(GetTouchAngle(scoped_xevent), 0.45f);
+ EXPECT_FLOAT_EQ(GetTouchForce(scoped_xevent), 0.5f);
// Touch with tracking id 5 should have old radius/angle value and new pressue
// value.
valuators.clear();
valuators.push_back(Valuator(DeviceDataManager::DT_TOUCH_PRESSURE, 50));
- ui::ScopedXI2Event event4(CreateTouchEventForTest(
- 0, XI_TouchEnd, 5, gfx::Point(30, 30), valuators));
- EXPECT_EQ(ui::ET_TOUCH_RELEASED, ui::EventTypeFromNative(event4));
- EXPECT_EQ("30,30", ui::EventLocationFromNative(event4).ToString());
- EXPECT_EQ(GetTouchId(event4), 0);
- EXPECT_EQ(GetTouchRadiusX(event4), 10);
- EXPECT_FLOAT_EQ(GetTouchAngle(event4), 0.25f);
- EXPECT_FLOAT_EQ(GetTouchForce(event4), 0.05f);
+ scoped_xevent.InitTouchEvent(
+ 0, XI_TouchEnd, 5, gfx::Point(30, 30), valuators);
+ EXPECT_EQ(ui::ET_TOUCH_RELEASED, ui::EventTypeFromNative(scoped_xevent));
+ EXPECT_EQ("30,30", ui::EventLocationFromNative(scoped_xevent).ToString());
+ EXPECT_EQ(GetTouchId(scoped_xevent), 0);
+ EXPECT_EQ(GetTouchRadiusX(scoped_xevent), 10);
+ EXPECT_FLOAT_EQ(GetTouchAngle(scoped_xevent), 0.25f);
+ EXPECT_FLOAT_EQ(GetTouchForce(scoped_xevent), 0.05f);
// Touch with tracking id 6 should have old angle/pressure value and new
// radius value.
valuators.clear();
valuators.push_back(Valuator(DeviceDataManager::DT_TOUCH_MAJOR, 50));
- ui::ScopedXI2Event event5(CreateTouchEventForTest(
- 0, XI_TouchEnd, 6, gfx::Point(200, 200), valuators));
- EXPECT_EQ(ui::ET_TOUCH_RELEASED, ui::EventTypeFromNative(event5));
- EXPECT_EQ("200,200", ui::EventLocationFromNative(event5).ToString());
- EXPECT_EQ(GetTouchId(event5), 1);
- EXPECT_EQ(GetTouchRadiusX(event5), 25);
- EXPECT_FLOAT_EQ(GetTouchAngle(event5), 0.45f);
- EXPECT_FLOAT_EQ(GetTouchForce(event5), 0.5f);
+ scoped_xevent.InitTouchEvent(
+ 0, XI_TouchEnd, 6, gfx::Point(200, 200), valuators);
+ EXPECT_EQ(ui::ET_TOUCH_RELEASED, ui::EventTypeFromNative(scoped_xevent));
+ EXPECT_EQ("200,200", ui::EventLocationFromNative(scoped_xevent).ToString());
+ EXPECT_EQ(GetTouchId(scoped_xevent), 1);
+ EXPECT_EQ(GetTouchRadiusX(scoped_xevent), 25);
+ EXPECT_FLOAT_EQ(GetTouchAngle(scoped_xevent), 0.45f);
+ EXPECT_FLOAT_EQ(GetTouchForce(scoped_xevent), 0.5f);
}
#endif
} // namespace ui