1// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4//
5// This file declares routines for creating fake GDK events (at the moment,
6// only keyboard events). This is useful for a variety of testing purposes.
7// NOTE: This should not be used outside of testing.
8
9#ifndef UI_BASE_GTK_EVENT_SYNTHESIS_GTK_
10#define UI_BASE_GTK_EVENT_SYNTHESIS_GTK_
11
12#include <gdk/gdk.h>
13#include <gdk/gdkkeysyms.h>
14#include <vector>
15
16#include "ui/base/ui_export.h"
17#include "ui/events/keycodes/keyboard_codes.h"
18
19namespace ui {
20
21// Creates and returns a key event. Passes ownership to the caller.
22UI_EXPORT GdkEvent* SynthesizeKeyEvent(GdkWindow* event_window,
23                                       bool press,
24                                       guint gdk_key,
25                                       guint state);
26
27// Creates the proper sequence of key events for a key press + release.
28// Ownership of the events in the vector is passed to the caller.
29UI_EXPORT void SynthesizeKeyPressEvents(
30    GdkWindow* window,
31    KeyboardCode key,
32    bool control, bool shift, bool alt,
33    std::vector<GdkEvent*>* events);
34
35}  // namespace ui
36
37#endif  // UI_BASE_GTK_EVENT_SYNTHESIS_GTK_
38