Home | History | Annotate | Download | only in keyboard_overlay
      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 ASH_KEYBOARD_OVERLAY_KEYBOARD_OVERLAY_VIEW_H_
      6 #define ASH_KEYBOARD_OVERLAY_KEYBOARD_OVERLAY_VIEW_H_
      7 
      8 #include <vector>
      9 
     10 #include "ash/ash_export.h"
     11 #include "ash/wm/overlay_event_filter.h"
     12 #include "base/compiler_specific.h"
     13 #include "base/gtest_prod_util.h"
     14 #include "ui/views/controls/webview/web_dialog_view.h"
     15 
     16 class GURL;
     17 
     18 namespace content {
     19 class BrowserContext;
     20 }
     21 
     22 namespace ui {
     23 class WebDialogDelegate;
     24 }
     25 
     26 namespace ash {
     27 
     28 // A customized dialog view for the keyboard overlay.
     29 class ASH_EXPORT KeyboardOverlayView
     30     : public views::WebDialogView,
     31       public ash::internal::OverlayEventFilter::Delegate {
     32  public:
     33   struct KeyEventData {
     34     ui::KeyboardCode key_code;
     35     int flags;
     36   };
     37 
     38   KeyboardOverlayView(content::BrowserContext* context,
     39                       ui::WebDialogDelegate* delegate,
     40                       WebContentsHandler* handler);
     41   virtual ~KeyboardOverlayView();
     42 
     43   // Overridden from ash::internal::OverlayEventFilter::Delegate:
     44   virtual void Cancel() OVERRIDE;
     45   virtual bool IsCancelingKeyEvent(ui::KeyEvent* event) OVERRIDE;
     46   virtual aura::Window* GetWindow() OVERRIDE;
     47 
     48   // Shows the keyboard overlay.
     49   static void ShowDialog(content::BrowserContext* context,
     50                          WebContentsHandler* handler,
     51                          const GURL& url);
     52 
     53  private:
     54   FRIEND_TEST_ALL_PREFIXES(KeyboardOverlayViewTest, OpenAcceleratorsClose);
     55   FRIEND_TEST_ALL_PREFIXES(KeyboardOverlayViewTest, NoRedundantCancelingKeys);
     56 
     57   // Overridden from views::WidgetDelegate:
     58   virtual void WindowClosing() OVERRIDE;
     59 
     60   static void GetCancelingKeysForTesting(
     61       std::vector<KeyEventData>* canceling_keys);
     62 
     63   DISALLOW_COPY_AND_ASSIGN(KeyboardOverlayView);
     64 };
     65 
     66 }  // namespace ash
     67 
     68 #endif  // ASH_KEYBOARD_OVERLAY_KEYBOARD_OVERLAY_VIEW_H_
     69