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