15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This file declares routines for creating fake GDK events (at the moment,
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// only keyboard events). This is useful for a variety of testing purposes.
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NOTE: This should not be used outside of testing.
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef UI_BASE_GTK_EVENT_SYNTHESIS_GTK_
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define UI_BASE_GTK_EVENT_SYNTHESIS_GTK_
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <gdk/gdk.h>
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <gdk/gdkkeysyms.h>
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector>
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/ui_export.h"
17d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "ui/events/keycodes/keyboard_codes.h"
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ui {
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Creates and returns a key event. Passes ownership to the caller.
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)UI_EXPORT GdkEvent* SynthesizeKeyEvent(GdkWindow* event_window,
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                       bool press,
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                       guint gdk_key,
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                       guint state);
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Creates the proper sequence of key events for a key press + release.
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Ownership of the events in the vector is passed to the caller.
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)UI_EXPORT void SynthesizeKeyPressEvents(
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    GdkWindow* window,
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    KeyboardCode key,
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    bool control, bool shift, bool alt,
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    std::vector<GdkEvent*>* events);
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace ui
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // UI_BASE_GTK_EVENT_SYNTHESIS_GTK_
38