Home | History | Annotate | Download | only in keyboard
      1 // Copyright (c) 2013 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 #ifndef UI_KEYBOARD_KEYBOARD_UTIL_H_
      6 #define UI_KEYBOARD_KEYBOARD_UTIL_H_
      7 
      8 #include <string>
      9 
     10 #include "base/strings/string16.h"
     11 // TODO(beng): replace with forward decl once RootWindow is renamed.
     12 #include "ui/aura/window.h"
     13 #include "ui/keyboard/keyboard_export.h"
     14 
     15 struct GritResourceMap;
     16 
     17 namespace aura {
     18 class WindowTreeHost;
     19 }
     20 
     21 class GURL;
     22 
     23 namespace keyboard {
     24 
     25 // Enumeration of swipe directions.
     26 enum CursorMoveDirection {
     27   kCursorMoveRight = 0x01,
     28   kCursorMoveLeft = 0x02,
     29   kCursorMoveUp = 0x04,
     30   kCursorMoveDown = 0x08
     31 };
     32 
     33 // An enumeration of different keyboard control events that should be logged.
     34 enum KeyboardControlEvent {
     35   KEYBOARD_CONTROL_SHOW = 0,
     36   KEYBOARD_CONTROL_HIDE_AUTO,
     37   KEYBOARD_CONTROL_HIDE_USER,
     38   KEYBOARD_CONTROL_MAX,
     39 };
     40 
     41 // An enumeration of keyboard overscroll override value.
     42 enum KeyboardOverscrolOverride {
     43   KEYBOARD_OVERSCROLL_OVERRIDE_DISABLED = 0,
     44   KEYBOARD_OVERSCROLL_OVERRIDE_ENABLED,
     45   KEYBOARD_OVERSCROLL_OVERRIDE_NONE,
     46 };
     47 
     48 // An enumeration of keyboard policy settings.
     49 enum KeyboardShowOverride {
     50   KEYBOARD_SHOW_OVERRIDE_DISABLED = 0,
     51   KEYBOARD_SHOW_OVERRIDE_ENABLED,
     52   KEYBOARD_SHOW_OVERRIDE_NONE,
     53 };
     54 
     55 // Gets the default keyboard bounds from |window_bounds|.
     56 KEYBOARD_EXPORT gfx::Rect DefaultKeyboardBoundsFromWindowBounds(
     57     const gfx::Rect& window_bounds);
     58 
     59 // Gets the caculated keyboard bounds from |window_bounds|. The keyboard height
     60 // is specified by |keyboard_height|.
     61 KEYBOARD_EXPORT gfx::Rect KeyboardBoundsFromWindowBounds(
     62     const gfx::Rect& window_bounds, int keyboard_height);
     63 
     64 // Sets the state of the a11y onscreen keyboard.
     65 KEYBOARD_EXPORT void SetAccessibilityKeyboardEnabled(bool enabled);
     66 
     67 // Gets the state of the a11y onscreen keyboard.
     68 KEYBOARD_EXPORT bool GetAccessibilityKeyboardEnabled();
     69 
     70 // Sets the state of the touch onscreen keyboard.
     71 KEYBOARD_EXPORT void SetTouchKeyboardEnabled(bool enabled);
     72 
     73 // Gets the state of the touch onscreen keyboard.
     74 KEYBOARD_EXPORT bool GetTouchKeyboardEnabled();
     75 
     76 // Gets the default keyboard layout.
     77 KEYBOARD_EXPORT std::string GetKeyboardLayout();
     78 
     79 // Returns true if the virtual keyboard is enabled.
     80 KEYBOARD_EXPORT bool IsKeyboardEnabled();
     81 
     82 // Returns true if keyboard overscroll mode is enabled.
     83 KEYBOARD_EXPORT bool IsKeyboardOverscrollEnabled();
     84 
     85 // Sets temporary keyboard overscroll override.
     86 KEYBOARD_EXPORT void SetKeyboardOverscrollOverride(
     87     KeyboardOverscrolOverride override);
     88 
     89 // Sets policy override on whether to show the keyboard.
     90 KEYBOARD_EXPORT void SetKeyboardShowOverride(KeyboardShowOverride override);
     91 
     92 // Returns true if an IME extension can specify a custom input view for the
     93 // virtual keyboard window.
     94 KEYBOARD_EXPORT bool IsInputViewEnabled();
     95 
     96 // Returns true if experimental features are enabled for IME input-views.
     97 KEYBOARD_EXPORT bool IsExperimentalInputViewEnabled();
     98 
     99 // Insert |text| into the active TextInputClient associated with |root_window|,
    100 // if there is one. Returns true if |text| was successfully inserted. Note
    101 // that this may convert |text| into ui::KeyEvents for injection in some
    102 // special circumstances (i.e. VKEY_RETURN, VKEY_BACK).
    103 KEYBOARD_EXPORT bool InsertText(const base::string16& text,
    104                                 aura::Window* root_window);
    105 
    106 // Move cursor when swipe on the virtualkeyboard. Returns true if cursor was
    107 // successfully moved according to |swipe_direction|.
    108 KEYBOARD_EXPORT bool MoveCursor(int swipe_direction,
    109                                 int modifier_flags,
    110                                 aura::WindowTreeHost* host);
    111 
    112 // Sends a fabricated key event, where |type| is the event type, |key_value|
    113 // is the unicode value of the character, |key_code| is the legacy key code
    114 // value, |key_name| is the name of the key as defined in the DOM3 key event
    115 // specification, and |modifier| indicates if any modifier keys are being
    116 // virtually pressed. The event is dispatched to the active TextInputClient
    117 // associated with |root_window|. The type may be "keydown" or "keyup".
    118 KEYBOARD_EXPORT bool SendKeyEvent(std::string type,
    119                                    int key_value,
    120                                    int key_code,
    121                                    std::string key_name,
    122                                    int modifiers,
    123                                    aura::WindowTreeHost* host);
    124 
    125 // Marks that the keyboard load has started. This is used to measure the time it
    126 // takes to fully load the keyboard. This should be called before
    127 // MarkKeyboardLoadFinished.
    128 KEYBOARD_EXPORT void MarkKeyboardLoadStarted();
    129 
    130 // Marks that the keyboard load has ended. This finishes measuring that the
    131 // keyboard is loaded.
    132 KEYBOARD_EXPORT void MarkKeyboardLoadFinished();
    133 
    134 // Get the list of keyboard resources. |size| is populated with the number of
    135 // resources in the returned array.
    136 KEYBOARD_EXPORT const GritResourceMap* GetKeyboardExtensionResources(
    137     size_t* size);
    138 
    139 // Sets the override content url.
    140 // This is used by for input view for extension IMEs.
    141 KEYBOARD_EXPORT void SetOverrideContentUrl(const GURL& url);
    142 
    143 // Gets the override content url.
    144 KEYBOARD_EXPORT const GURL& GetOverrideContentUrl();
    145 
    146 // Logs the keyboard control event as a UMA stat.
    147 void LogKeyboardControlEvent(KeyboardControlEvent event);
    148 
    149 }  // namespace keyboard
    150 
    151 #endif  // UI_KEYBOARD_KEYBOARD_UTIL_H_
    152