OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CHROME_BROWSER_UI_VIEWS_APPS_CHROME_NATIVE_APP_WINDOW_VIEWS_H_ | 5 #ifndef CHROME_BROWSER_UI_VIEWS_APPS_CHROME_NATIVE_APP_WINDOW_VIEWS_H_ |
6 #define CHROME_BROWSER_UI_VIEWS_APPS_CHROME_NATIVE_APP_WINDOW_VIEWS_H_ | 6 #define CHROME_BROWSER_UI_VIEWS_APPS_CHROME_NATIVE_APP_WINDOW_VIEWS_H_ |
7 | 7 |
8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
9 #include "extensions/components/native_app_window/native_app_window_views.h" | 9 #include "extensions/components/native_app_window/native_app_window_views.h" |
10 #include "ui/views/context_menu_controller.h" | |
11 | 10 |
12 namespace apps { | 11 namespace apps { |
13 class AppWindowFrameView; | 12 class AppWindowFrameView; |
14 } | 13 } |
15 | 14 |
16 #if defined(USE_ASH) | |
17 namespace ash { | |
18 class ImmersiveFullscreenController; | |
19 } | |
20 #endif | |
21 | |
22 class DesktopKeyboardCapture; | 15 class DesktopKeyboardCapture; |
23 class ExtensionKeybindingRegistryViews; | 16 class ExtensionKeybindingRegistryViews; |
24 | 17 |
25 namespace views { | |
26 class MenuRunner; | |
27 } | |
28 | |
29 class ChromeNativeAppWindowViews | 18 class ChromeNativeAppWindowViews |
30 : public native_app_window::NativeAppWindowViews, | 19 : public native_app_window::NativeAppWindowViews { |
31 public views::ContextMenuController { | |
32 public: | 20 public: |
33 ChromeNativeAppWindowViews(); | 21 ChromeNativeAppWindowViews(); |
34 ~ChromeNativeAppWindowViews() override; | 22 ~ChromeNativeAppWindowViews() override; |
35 | 23 |
36 SkRegion* shape() { return shape_.get(); } | 24 SkRegion* shape() { return shape_.get(); } |
37 | 25 |
38 protected: | 26 protected: |
39 // Called before views::Widget::Init() to allow subclasses to customize | 27 // Called before views::Widget::Init() in InitializeDefaultWindow() to allow |
40 // the InitParams that would be passed. | 28 // subclasses to customize the InitParams that would be passed. |
41 virtual void OnBeforeWidgetInit(views::Widget::InitParams* init_params, | 29 virtual void OnBeforeWidgetInit( |
42 views::Widget* widget); | 30 const extensions::AppWindow::CreateParams& create_params, |
| 31 views::Widget::InitParams* init_params, |
| 32 views::Widget* widget); |
| 33 // Called before views::Widget::Init() in InitializeDefaultWindow() to allow |
| 34 // subclasses to customize the InitParams that would be passed. |
| 35 virtual void OnBeforePanelWidgetInit(views::Widget::InitParams* init_params, |
| 36 views::Widget* widget); |
43 | 37 |
44 virtual void InitializeDefaultWindow( | 38 virtual void InitializeDefaultWindow( |
45 const extensions::AppWindow::CreateParams& create_params); | 39 const extensions::AppWindow::CreateParams& create_params); |
46 virtual void InitializePanelWindow( | 40 virtual void InitializePanelWindow( |
47 const extensions::AppWindow::CreateParams& create_params); | 41 const extensions::AppWindow::CreateParams& create_params); |
48 virtual views::NonClientFrameView* CreateStandardDesktopAppFrame(); | 42 virtual views::NonClientFrameView* CreateStandardDesktopAppFrame(); |
| 43 virtual apps::AppWindowFrameView* CreateNonStandardAppFrame(); |
49 | 44 |
50 // ui::BaseWindow implementation. | 45 // ui::BaseWindow implementation. |
51 gfx::Rect GetRestoredBounds() const override; | 46 gfx::Rect GetRestoredBounds() const override; |
52 ui::WindowShowState GetRestoredState() const override; | 47 ui::WindowShowState GetRestoredState() const override; |
53 bool IsAlwaysOnTop() const override; | 48 bool IsAlwaysOnTop() const override; |
54 | 49 |
55 // Overridden from views::ContextMenuController: | |
56 void ShowContextMenuForView(views::View* source, | |
57 const gfx::Point& p, | |
58 ui::MenuSourceType source_type) override; | |
59 | |
60 // WidgetDelegate implementation. | 50 // WidgetDelegate implementation. |
61 gfx::ImageSkia GetWindowAppIcon() override; | 51 gfx::ImageSkia GetWindowAppIcon() override; |
62 gfx::ImageSkia GetWindowIcon() override; | 52 gfx::ImageSkia GetWindowIcon() override; |
63 views::NonClientFrameView* CreateNonClientFrameView( | 53 views::NonClientFrameView* CreateNonClientFrameView( |
64 views::Widget* widget) override; | 54 views::Widget* widget) override; |
65 bool WidgetHasHitTestMask() const override; | 55 bool WidgetHasHitTestMask() const override; |
66 void GetWidgetHitTestMask(gfx::Path* mask) const override; | 56 void GetWidgetHitTestMask(gfx::Path* mask) const override; |
67 | 57 |
68 // views::View implementation. | 58 // views::View implementation. |
69 gfx::Size GetPreferredSize() const override; | 59 gfx::Size GetPreferredSize() const override; |
70 bool AcceleratorPressed(const ui::Accelerator& accelerator) override; | 60 bool AcceleratorPressed(const ui::Accelerator& accelerator) override; |
71 | 61 |
72 // NativeAppWindow implementation. | 62 // NativeAppWindow implementation. |
73 void SetFullscreen(int fullscreen_types) override; | 63 void SetFullscreen(int fullscreen_types) override; |
74 bool IsFullscreenOrPending() const override; | 64 bool IsFullscreenOrPending() const override; |
75 void UpdateBadgeIcon() override; | 65 void UpdateBadgeIcon() override; |
76 void UpdateShape(scoped_ptr<SkRegion> region) override; | 66 void UpdateShape(scoped_ptr<SkRegion> region) override; |
77 bool HasFrameColor() const override; | 67 bool HasFrameColor() const override; |
78 SkColor ActiveFrameColor() const override; | 68 SkColor ActiveFrameColor() const override; |
79 SkColor InactiveFrameColor() const override; | 69 SkColor InactiveFrameColor() const override; |
80 void SetInterceptAllKeys(bool want_all_keys) override; | 70 void SetInterceptAllKeys(bool want_all_keys) override; |
81 | 71 |
82 // NativeAppWindowViews implementation. | 72 // NativeAppWindowViews implementation. |
83 void InitializeWindow( | 73 void InitializeWindow( |
84 extensions::AppWindow* app_window, | 74 extensions::AppWindow* app_window, |
85 const extensions::AppWindow::CreateParams& create_params) override; | 75 const extensions::AppWindow::CreateParams& create_params) override; |
86 | 76 |
87 private: | 77 private: |
88 FRIEND_TEST_ALL_PREFIXES(ShapedAppWindowTargeterTest, | |
89 ResizeInsetsWithinBounds); | |
90 | |
91 apps::AppWindowFrameView* CreateNonStandardAppFrame(); | |
92 | |
93 // True if the window is fullscreen or fullscreen is pending. | 78 // True if the window is fullscreen or fullscreen is pending. |
94 bool is_fullscreen_; | 79 bool is_fullscreen_; |
95 | 80 |
96 // Custom shape of the window. If this is not set then the window has a | 81 // Custom shape of the window. If this is not set then the window has a |
97 // default shape, usually rectangular. | 82 // default shape, usually rectangular. |
98 scoped_ptr<SkRegion> shape_; | 83 scoped_ptr<SkRegion> shape_; |
99 | 84 |
100 bool has_frame_color_; | 85 bool has_frame_color_; |
101 SkColor active_frame_color_; | 86 SkColor active_frame_color_; |
102 SkColor inactive_frame_color_; | 87 SkColor inactive_frame_color_; |
103 gfx::Size preferred_size_; | 88 gfx::Size preferred_size_; |
104 | 89 |
105 // The class that registers for keyboard shortcuts for extension commands. | 90 // The class that registers for keyboard shortcuts for extension commands. |
106 scoped_ptr<ExtensionKeybindingRegistryViews> extension_keybinding_registry_; | 91 scoped_ptr<ExtensionKeybindingRegistryViews> extension_keybinding_registry_; |
107 | 92 |
108 #if defined(USE_ASH) | |
109 // Used to put non-frameless windows into immersive fullscreen on ChromeOS. In | |
110 // immersive fullscreen, the window header (title bar and window controls) | |
111 // slides onscreen as an overlay when the mouse is hovered at the top of the | |
112 // screen. | |
113 scoped_ptr<ash::ImmersiveFullscreenController> | |
114 immersive_fullscreen_controller_; | |
115 #endif // defined(USE_ASH) | |
116 | |
117 // Used to show the system menu. | |
118 scoped_ptr<views::MenuRunner> menu_runner_; | |
119 | |
120 // Used to capture all keyboard events including task switching sequence. | 93 // Used to capture all keyboard events including task switching sequence. |
121 scoped_ptr<DesktopKeyboardCapture> desktop_keyboard_capture_; | 94 scoped_ptr<DesktopKeyboardCapture> desktop_keyboard_capture_; |
122 | 95 |
123 DISALLOW_COPY_AND_ASSIGN(ChromeNativeAppWindowViews); | 96 DISALLOW_COPY_AND_ASSIGN(ChromeNativeAppWindowViews); |
124 }; | 97 }; |
125 | 98 |
126 #endif // CHROME_BROWSER_UI_VIEWS_APPS_CHROME_NATIVE_APP_WINDOW_VIEWS_H_ | 99 #endif // CHROME_BROWSER_UI_VIEWS_APPS_CHROME_NATIVE_APP_WINDOW_VIEWS_H_ |
OLD | NEW |