1 // Copyright (c) 2012 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_VIEWS_CONTROLS_WEBVIEW_UNHANDLED_KEYBOARD_EVENT_HANDLER_H_ 6 #define UI_VIEWS_CONTROLS_WEBVIEW_UNHANDLED_KEYBOARD_EVENT_HANDLER_H_ 7 8 #include "base/macros.h" 9 #include "ui/gfx/native_widget_types.h" 10 #include "ui/views/controls/webview/webview_export.h" 11 12 namespace content { 13 struct NativeWebKeyboardEvent; 14 } 15 16 namespace views { 17 class FocusManager; 18 19 // This class handles unhandled keyboard messages coming back from the renderer 20 // process. 21 class WEBVIEW_EXPORT UnhandledKeyboardEventHandler { 22 public: 23 UnhandledKeyboardEventHandler(); 24 ~UnhandledKeyboardEventHandler(); 25 26 bool HandleKeyboardEvent(const content::NativeWebKeyboardEvent& event, 27 FocusManager* focus_manager); 28 29 private: 30 // Platform specific handling for unhandled keyboard events. 31 static bool HandleNativeKeyboardEvent(gfx::NativeEvent event, 32 FocusManager* focus_manager); 33 34 // Whether to ignore the next Char keyboard event. 35 // If a RawKeyDown event was handled as a shortcut key, then we're done 36 // handling it and should eat any Char event that the translate phase may 37 // have produced from it. (Handling this event may cause undesirable effects, 38 // such as a beep if DefWindowProc() has no default handling for the given 39 // Char.) 40 bool ignore_next_char_event_ = false; 41 42 DISALLOW_COPY_AND_ASSIGN(UnhandledKeyboardEventHandler); 43 }; 44 45 } // namespace views 46 47 #endif // UI_VIEWS_CONTROLS_WEBVIEW_UNHANDLED_KEYBOARD_EVENT_HANDLER_H_ 48