1f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// found in the LICENSE file. 4f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 5f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#ifndef UI_EVENTS_TEST_EVENTS_TEST_UTILS_X11_H_ 6f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#define UI_EVENTS_TEST_EVENTS_TEST_UTILS_X11_H_ 7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 8f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/memory/scoped_ptr.h" 9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "ui/events/event_constants.h" 10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "ui/events/keycodes/keyboard_codes.h" 11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "ui/events/x/device_data_manager_x11.h" 12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "ui/gfx/point.h" 13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "ui/gfx/x/x11_types.h" 14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)typedef union _XEvent XEvent; 16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace ui { 18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)struct Valuator { 20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch Valuator(DeviceDataManagerX11::DataType type, double v) 21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) : data_type(type), value(v) {} 22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DeviceDataManagerX11::DataType data_type; 24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) double value; 25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}; 26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)struct XEventDeleter { 285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void operator()(XEvent* event); 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class ScopedXI2Event { 32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) public: 33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) ScopedXI2Event(); 34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) ~ScopedXI2Event(); 35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) operator XEvent*() { return event_.get(); } 37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Initializes a XEvent with for the appropriate type with the specified data. 39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Note that ui::EF_ flags should be passed as |flags|, not the native ones in 40f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // <X11/X.h>. 41f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void InitKeyEvent(EventType type, 42f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) KeyboardCode key_code, 43f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) int flags); 44f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Initializes an Xinput2 key event. 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // |deviceid| is the master, and |sourceid| is the slave device. 47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void InitGenericKeyEvent(int deviceid, 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int sourceid, 49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EventType type, 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch KeyboardCode key_code, 51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch int flags); 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void InitGenericButtonEvent(int deviceid, 545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EventType type, 5523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) const gfx::Point& location, 565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int flags); 575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 5823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) void InitGenericMouseWheelEvent(int deviceid, 5923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) int wheel_delta, 6023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) int flags); 61f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 62f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void InitScrollEvent(int deviceid, 63f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) int x_offset, 64f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) int y_offset, 65f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) int x_offset_ordinal, 66f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) int y_offset_ordinal, 67f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) int finger_count); 68f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 69a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void InitFlingScrollEvent(int deviceid, 70a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) int x_velocity, 71a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) int y_velocity, 72a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) int x_velocity_ordinal, 73a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) int y_velocity_ordinal, 74a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) bool is_cancel); 75a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 76f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void InitTouchEvent(int deviceid, 77f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) int evtype, 78f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) int tracking_id, 79f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const gfx::Point& location, 80f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const std::vector<Valuator>& valuators); 81f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 82f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) private: 83f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void Cleanup(); 84f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 85a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void SetUpValuators(const std::vector<Valuator>& valuators); 86a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scoped_ptr<XEvent, XEventDeleter> event_; 88f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 89f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ScopedXI2Event); 90f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}; 91f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 92f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Initializes a test touchpad device for scroll events. 9323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)void SetUpTouchPadForTest(unsigned int deviceid); 94f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 95f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Initializes a list of touchscreen devices for touch events. 96a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)void SetUpTouchDevicesForTest(const std::vector<unsigned int>& devices); 97f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 98f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} // namespace ui 99f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 100f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#endif // UI_EVENTS_TEST_EVENTS_TEST_UTILS_X11_H_ 101