Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(48)

Side by Side Diff: chrome/browser/ui/views/frame/immersive_mode_controller_ash.h

Issue 14156005: Hide the tab indicators and the shelf when in immersive + tab fullscreen (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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_FRAME_IMMERSIVE_MODE_CONTROLLER_ASH_H_ 5 #ifndef CHROME_BROWSER_UI_VIEWS_FRAME_IMMERSIVE_MODE_CONTROLLER_ASH_H_
6 #define CHROME_BROWSER_UI_VIEWS_FRAME_IMMERSIVE_MODE_CONTROLLER_ASH_H_ 6 #define CHROME_BROWSER_UI_VIEWS_FRAME_IMMERSIVE_MODE_CONTROLLER_ASH_H_
7 7
8 #include "chrome/browser/ui/views/frame/immersive_mode_controller.h" 8 #include "chrome/browser/ui/views/frame/immersive_mode_controller.h"
9 9
10 #include "base/timer.h" 10 #include "base/timer.h"
11 #include "content/public/browser/notification_observer.h"
12 #include "content/public/browser/notification_registrar.h"
11 #include "ui/base/events/event_handler.h" 13 #include "ui/base/events/event_handler.h"
12 #include "ui/compositor/layer_animation_observer.h" 14 #include "ui/compositor/layer_animation_observer.h"
13 #include "ui/views/focus/focus_manager.h" 15 #include "ui/views/focus/focus_manager.h"
14 #include "ui/views/widget/widget_observer.h" 16 #include "ui/views/widget/widget_observer.h"
15 17
16 class BrowserView; 18 class BrowserView;
17 19
18 namespace aura { 20 namespace aura {
19 class Window; 21 class Window;
20 } 22 }
21 23
22 namespace gfx { 24 namespace gfx {
23 class Transform; 25 class Transform;
24 } 26 }
25 27
26 namespace ui { 28 namespace ui {
27 class Layer; 29 class Layer;
28 } 30 }
29 31
30 namespace views { 32 namespace views {
31 class View; 33 class View;
32 } 34 }
33 35
34 class ImmersiveModeControllerAsh : public ImmersiveModeController, 36 class ImmersiveModeControllerAsh : public ImmersiveModeController,
37 public content::NotificationObserver,
35 public ui::EventHandler, 38 public ui::EventHandler,
36 public ui::ImplicitAnimationObserver, 39 public ui::ImplicitAnimationObserver,
37 public views::FocusChangeListener, 40 public views::FocusChangeListener,
38 public views::WidgetObserver { 41 public views::WidgetObserver {
39 public: 42 public:
40 ImmersiveModeControllerAsh(); 43 ImmersiveModeControllerAsh();
41 virtual ~ImmersiveModeControllerAsh(); 44 virtual ~ImmersiveModeControllerAsh();
42 45
43 // These methods are used to increment and decrement |revealed_lock_count_|. 46 // These methods are used to increment and decrement |revealed_lock_count_|.
44 // If immersive mode is enabled, a transition from 1 to 0 in 47 // If immersive mode is enabled, a transition from 1 to 0 in
(...skipping 13 matching lines...) Expand all
58 virtual bool ShouldHideTopViews() const OVERRIDE; 61 virtual bool ShouldHideTopViews() const OVERRIDE;
59 virtual bool IsRevealed() const OVERRIDE; 62 virtual bool IsRevealed() const OVERRIDE;
60 virtual void MaybeStackViewAtTop() OVERRIDE; 63 virtual void MaybeStackViewAtTop() OVERRIDE;
61 virtual ImmersiveModeController::RevealedLock* 64 virtual ImmersiveModeController::RevealedLock*
62 GetRevealedLock() OVERRIDE WARN_UNUSED_RESULT; 65 GetRevealedLock() OVERRIDE WARN_UNUSED_RESULT;
63 virtual void AnchorWidgetToTopContainer(views::Widget* widget, 66 virtual void AnchorWidgetToTopContainer(views::Widget* widget,
64 int y_offset) OVERRIDE; 67 int y_offset) OVERRIDE;
65 virtual void UnanchorWidgetFromTopContainer(views::Widget* widget) OVERRIDE; 68 virtual void UnanchorWidgetFromTopContainer(views::Widget* widget) OVERRIDE;
66 virtual void OnTopContainerBoundsChanged() OVERRIDE; 69 virtual void OnTopContainerBoundsChanged() OVERRIDE;
67 70
71 // content::NotificationObserver override:
72 virtual void Observe(int type,
73 const content::NotificationSource& source,
74 const content::NotificationDetails& details) OVERRIDE;
75
68 // ui::EventHandler overrides: 76 // ui::EventHandler overrides:
69 virtual void OnMouseEvent(ui::MouseEvent* event) OVERRIDE; 77 virtual void OnMouseEvent(ui::MouseEvent* event) OVERRIDE;
70 78
71 // views::FocusChangeObserver overrides: 79 // views::FocusChangeObserver overrides:
72 virtual void OnWillChangeFocus(views::View* focused_before, 80 virtual void OnWillChangeFocus(views::View* focused_before,
73 views::View* focused_now) OVERRIDE; 81 views::View* focused_now) OVERRIDE;
74 virtual void OnDidChangeFocus(views::View* focused_before, 82 virtual void OnDidChangeFocus(views::View* focused_before,
75 views::View* focused_now) OVERRIDE; 83 views::View* focused_now) OVERRIDE;
76 84
77 // views::WidgetObserver overrides: 85 // views::WidgetObserver overrides:
78 virtual void OnWidgetDestroying(views::Widget* widget) OVERRIDE; 86 virtual void OnWidgetDestroying(views::Widget* widget) OVERRIDE;
79 virtual void OnWidgetActivationChanged(views::Widget* widget, 87 virtual void OnWidgetActivationChanged(views::Widget* widget,
80 bool active) OVERRIDE; 88 bool active) OVERRIDE;
81 89
82 // ui::ImplicitAnimationObserver override: 90 // ui::ImplicitAnimationObserver override:
83 virtual void OnImplicitAnimationsCompleted() OVERRIDE; 91 virtual void OnImplicitAnimationsCompleted() OVERRIDE;
84 92
85 // Testing interface. 93 // Testing interface.
86 void SetHideTabIndicatorsForTest(bool hide); 94 void SetForceHideTabIndicatorsForTest(bool force);
87 void StartRevealForTest(bool hovered); 95 void StartRevealForTest(bool hovered);
88 void SetMouseHoveredForTest(bool hovered); 96 void SetMouseHoveredForTest(bool hovered);
89 97
90 private: 98 private:
91 enum Animate { 99 enum Animate {
92 ANIMATE_NO, 100 ANIMATE_NO,
93 ANIMATE_SLOW, 101 ANIMATE_SLOW,
94 ANIMATE_FAST, 102 ANIMATE_FAST,
95 }; 103 };
96 enum RevealState { 104 enum RevealState {
97 CLOSED, // Top container only showing tabstrip, y = 0. 105 CLOSED, // Top container only showing tabstrip, y = 0.
98 SLIDING_OPEN, // All views showing, y animating from -height to 0. 106 SLIDING_OPEN, // All views showing, y animating from -height to 0.
99 REVEALED, // All views showing, y = 0. 107 REVEALED, // All views showing, y = 0.
100 SLIDING_CLOSED, // All views showing, y animating from 0 to -height. 108 SLIDING_CLOSED, // All views showing, y animating from 0 to -height.
101 }; 109 };
110 enum TabIndicatorVisibility {
111 TAB_INDICATORS_FORCE_HIDE,
112 TAB_INDICATORS_HIDE,
113 TAB_INDICATORS_SHOW
114 };
102 115
103 // Enables or disables observers for mouse move, focus, and window restore. 116 // Enables or disables observers for mouse move, focus, and window restore.
104 void EnableWindowObservers(bool enable); 117 void EnableWindowObservers(bool enable);
105 118
106 // Update |mouse_revealed_lock_| based on the current mouse state and the 119 // Update |mouse_revealed_lock_| based on the current mouse state and the
107 // currently active widget. 120 // currently active widget.
108 // |maybe_drag| is true if the user may be in the middle of a drag. 121 // |maybe_drag| is true if the user may be in the middle of a drag.
109 void UpdateMouseRevealedLock(bool maybe_drag); 122 void UpdateMouseRevealedLock(bool maybe_drag);
110 123
111 // Acquire the mouse revealed lock if it is not already held. 124 // Acquire the mouse revealed lock if it is not already held.
112 void AcquireMouseRevealedLock(); 125 void AcquireMouseRevealedLock();
113 126
114 // Update |focus_revealed_lock_| based on the currently active view and the 127 // Update |focus_revealed_lock_| based on the currently active view and the
115 // currently active widget. 128 // currently active widget.
116 void UpdateFocusRevealedLock(); 129 void UpdateFocusRevealedLock();
117 130
131 // Updates whether fullscreen uses any chrome at all. When using minimal
132 // chrome, a 'light bar' is permanently visible for the launcher and possibly
133 // for the tabstrip.
134 // If |skip_layout| is true, no layout is done as part of the update.
135 void UpdateUseMinimalChrome(bool skip_layout);
James Cook 2013/04/22 18:14:16 Optional: Consider re-introducing the LAYOUT_YES,
136
118 // Returns the animation duration given |animate|. 137 // Returns the animation duration given |animate|.
119 int GetAnimationDuration(Animate animate) const; 138 int GetAnimationDuration(Animate animate) const;
120 139
121 // Temporarily reveals the top-of-window views while in immersive mode, 140 // Temporarily reveals the top-of-window views while in immersive mode,
122 // hiding them when the cursor exits the area of the top views. If |animate| 141 // hiding them when the cursor exits the area of the top views. If |animate|
123 // is not ANIMATE_NO, slides in the view, otherwise shows it immediately. 142 // is not ANIMATE_NO, slides in the view, otherwise shows it immediately.
124 void MaybeStartReveal(Animate animate); 143 void MaybeStartReveal(Animate animate);
125 144
126 // Enables or disables layer-based painting to allow smooth animations. 145 // Enables or disables layer-based painting to allow smooth animations.
127 void EnablePaintToLayer(bool enable); 146 void EnablePaintToLayer(bool enable);
(...skipping 29 matching lines...) Expand all
157 BrowserView* browser_view_; 176 BrowserView* browser_view_;
158 177
159 // True when in immersive mode. 178 // True when in immersive mode.
160 bool enabled_; 179 bool enabled_;
161 180
162 // State machine for the revealed/closed animations. 181 // State machine for the revealed/closed animations.
163 RevealState reveal_state_; 182 RevealState reveal_state_;
164 183
165 int revealed_lock_count_; 184 int revealed_lock_count_;
166 185
167 // True if the miniature "tab indicators" should be hidden in the main browser 186 // The visibility of the miniature "tab indicators" in the main browser view
168 // view when immersive mode is enabled. 187 // when immersive mode is enabled and the top-of-window views are closed.
169 bool hide_tab_indicators_; 188 TabIndicatorVisibility tab_indicator_visibility_;
170 189
171 // Timer to track cursor being held at the top. 190 // Timer to track cursor being held at the top.
172 base::OneShotTimer<ImmersiveModeController> top_timer_; 191 base::OneShotTimer<ImmersiveModeController> top_timer_;
173 192
174 // Lock which keeps the top-of-window views revealed based on the current 193 // Lock which keeps the top-of-window views revealed based on the current
175 // mouse state. 194 // mouse state.
176 scoped_ptr<RevealedLock> mouse_revealed_lock_; 195 scoped_ptr<RevealedLock> mouse_revealed_lock_;
177 196
178 // Lock which keeps the top-of-window views revealed based on the focused view 197 // Lock which keeps the top-of-window views revealed based on the focused view
179 // and the active widget. 198 // and the active widget.
180 scoped_ptr<RevealedLock> focus_revealed_lock_; 199 scoped_ptr<RevealedLock> focus_revealed_lock_;
181 200
182 // Native window for the browser, needed to clean up observers. 201 // Native window for the browser, needed to clean up observers.
183 aura::Window* native_window_; 202 aura::Window* native_window_;
184 203
185 // Observer to disable immersive mode when window leaves the maximized state. 204 // Observer to disable immersive mode when window leaves the maximized state.
186 class WindowObserver; 205 class WindowObserver;
187 scoped_ptr<WindowObserver> window_observer_; 206 scoped_ptr<WindowObserver> window_observer_;
188 207
189 // Manages widgets which are anchored to the top-of-window views. 208 // Manages widgets which are anchored to the top-of-window views.
190 class AnchoredWidgetManager; 209 class AnchoredWidgetManager;
191 scoped_ptr<AnchoredWidgetManager> anchored_widget_manager_; 210 scoped_ptr<AnchoredWidgetManager> anchored_widget_manager_;
192 211
212 content::NotificationRegistrar registrar_;
213
193 base::WeakPtrFactory<ImmersiveModeControllerAsh> weak_ptr_factory_; 214 base::WeakPtrFactory<ImmersiveModeControllerAsh> weak_ptr_factory_;
194 215
195 DISALLOW_COPY_AND_ASSIGN(ImmersiveModeControllerAsh); 216 DISALLOW_COPY_AND_ASSIGN(ImmersiveModeControllerAsh);
196 }; 217 };
197 218
198 #endif // CHROME_BROWSER_UI_VIEWS_FRAME_IMMERSIVE_MODE_CONTROLLER_ASH_H_ 219 #endif // CHROME_BROWSER_UI_VIEWS_FRAME_IMMERSIVE_MODE_CONTROLLER_ASH_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698