blob: b5dcefd1e86c38bfbf26da37f58e4fbdd112fec9 [file] [log] [blame]
// Copyright (c) 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef UI_KEYBOARD_KEYBOARD_UTIL_H_
#define UI_KEYBOARD_KEYBOARD_UTIL_H_
#include <string>
#include "base/strings/string16.h"
// TODO(beng): replace with forward decl once RootWindow is renamed.
#include "ui/aura/window.h"
#include "ui/keyboard/keyboard_export.h"
struct GritResourceMap;
namespace keyboard {
// Enumeration of swipe directions.
enum CursorMoveDirection {
kCursorMoveRight = 0x01,
kCursorMoveLeft = 0x02,
kCursorMoveUp = 0x04,
kCursorMoveDown = 0x08
};
// An enumeration of different keyboard control events that should be logged.
enum KeyboardControlEvent {
KEYBOARD_CONTROL_SHOW = 0,
KEYBOARD_CONTROL_HIDE_AUTO,
KEYBOARD_CONTROL_HIDE_USER,
KEYBOARD_CONTROL_MAX,
};
// Returns true if the virtual keyboard is enabled.
KEYBOARD_EXPORT bool IsKeyboardEnabled();
// Returns true if the keyboard usability test is enabled.
KEYBOARD_EXPORT bool IsKeyboardUsabilityExperimentEnabled();
// Insert |text| into the active TextInputClient associated with |root_window|,
// if there is one. Returns true if |text| was successfully inserted. Note
// that this may convert |text| into ui::KeyEvents for injection in some
// special circumstances (i.e. VKEY_RETURN, VKEY_BACK).
KEYBOARD_EXPORT bool InsertText(const base::string16& text,
aura::Window* root_window);
// Move cursor when swipe on the virtualkeyboard. Returns true if cursor was
// successfully moved according to |swipe_direction|.
KEYBOARD_EXPORT bool MoveCursor(int swipe_direction,
int modifier_flags,
aura::WindowEventDispatcher* dispatcher);
// Sends a fabricated key event, where |type| is the event type, |key_value|
// is the unicode value of the character, |key_code| is the legacy key code
// value, and |modifier| indicates if any modifier keys are being virtually
// pressed. The event is dispatched to the active TextInputClient associated
// with |root_window|. The type may be "keydown" or "keyup".
KEYBOARD_EXPORT bool SendKeyEvent(std::string type,
int key_value,
int key_code,
int modifiers,
aura::WindowEventDispatcher* dispatcher);
// Marks that the keyboard load has started. This is used to measure the time it
// takes to fully load the keyboard. This should be called before
// MarkKeyboardLoadFinished.
KEYBOARD_EXPORT const void MarkKeyboardLoadStarted();
// Marks that the keyboard load has ended. This finishes measuring that the
// keyboard is loaded.
KEYBOARD_EXPORT const void MarkKeyboardLoadFinished();
// Get the list of keyboard resources. |size| is populated with the number of
// resources in the returned array.
KEYBOARD_EXPORT const GritResourceMap* GetKeyboardExtensionResources(
size_t* size);
// Logs the keyboard control event as a UMA stat.
void LogKeyboardControlEvent(KeyboardControlEvent event);
} // namespace keyboard
#endif // UI_KEYBOARD_KEYBOARD_UTIL_H_