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

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

Issue 15734011: Correct immersive mode gestures under rotation (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix misnamed overrides correctly this time :-/ Created 7 years, 6 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
« no previous file with comments | « no previous file | chrome/browser/ui/views/frame/immersive_mode_controller_ash.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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" 11 #include "content/public/browser/notification_observer.h"
12 #include "content/public/browser/notification_registrar.h" 12 #include "content/public/browser/notification_registrar.h"
13 #include "ui/aura/window_observer.h"
13 #include "ui/base/events/event_handler.h" 14 #include "ui/base/events/event_handler.h"
14 #include "ui/compositor/layer_animation_observer.h" 15 #include "ui/compositor/layer_animation_observer.h"
15 #include "ui/views/focus/focus_manager.h" 16 #include "ui/views/focus/focus_manager.h"
16 #include "ui/views/widget/widget_observer.h" 17 #include "ui/views/widget/widget_observer.h"
17 18
18 class BrowserView; 19 class BrowserView;
19 class BookmarkBarView; 20 class BookmarkBarView;
20 class TopContainerView; 21 class TopContainerView;
21 22
22 namespace aura { 23 namespace aura {
(...skipping 10 matching lines...) Expand all
33 34
34 namespace views { 35 namespace views {
35 class View; 36 class View;
36 } 37 }
37 38
38 class ImmersiveModeControllerAsh : public ImmersiveModeController, 39 class ImmersiveModeControllerAsh : public ImmersiveModeController,
39 public content::NotificationObserver, 40 public content::NotificationObserver,
40 public ui::EventHandler, 41 public ui::EventHandler,
41 public ui::ImplicitAnimationObserver, 42 public ui::ImplicitAnimationObserver,
42 public views::FocusChangeListener, 43 public views::FocusChangeListener,
43 public views::WidgetObserver { 44 public views::WidgetObserver,
45 public aura::WindowObserver {
44 public: 46 public:
45 ImmersiveModeControllerAsh(); 47 ImmersiveModeControllerAsh();
46 virtual ~ImmersiveModeControllerAsh(); 48 virtual ~ImmersiveModeControllerAsh();
47 49
48 // These methods are used to increment and decrement |revealed_lock_count_|. 50 // These methods are used to increment and decrement |revealed_lock_count_|.
49 // If immersive mode is enabled, a transition from 1 to 0 in 51 // If immersive mode is enabled, a transition from 1 to 0 in
50 // |revealed_lock_count_| closes the top-of-window views and a transition 52 // |revealed_lock_count_| closes the top-of-window views and a transition
51 // from 0 to 1 in |revealed_lock_count_| reveals the top-of-window views. 53 // from 0 to 1 in |revealed_lock_count_| reveals the top-of-window views.
52 void LockRevealedState(AnimateReveal animate_reveal); 54 void LockRevealedState(AnimateReveal animate_reveal);
53 void UnlockRevealedState(); 55 void UnlockRevealedState();
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 views::View* focused_now) OVERRIDE; 90 views::View* focused_now) OVERRIDE;
89 91
90 // views::WidgetObserver overrides: 92 // views::WidgetObserver overrides:
91 virtual void OnWidgetDestroying(views::Widget* widget) OVERRIDE; 93 virtual void OnWidgetDestroying(views::Widget* widget) OVERRIDE;
92 virtual void OnWidgetActivationChanged(views::Widget* widget, 94 virtual void OnWidgetActivationChanged(views::Widget* widget,
93 bool active) OVERRIDE; 95 bool active) OVERRIDE;
94 96
95 // ui::ImplicitAnimationObserver override: 97 // ui::ImplicitAnimationObserver override:
96 virtual void OnImplicitAnimationsCompleted() OVERRIDE; 98 virtual void OnImplicitAnimationsCompleted() OVERRIDE;
97 99
100 // aura::WindowObserver overrides:
101 virtual void OnWindowPropertyChanged(aura::Window* window,
102 const void* key,
103 intptr_t old) OVERRIDE;
104 virtual void OnWindowAddedToRootWindow(aura::Window* window) OVERRIDE;
105 virtual void OnWindowRemovingFromRootWindow(aura::Window* window) OVERRIDE;
106
98 // Testing interface. 107 // Testing interface.
99 void SetForceHideTabIndicatorsForTest(bool force); 108 void SetForceHideTabIndicatorsForTest(bool force);
100 void StartRevealForTest(bool hovered); 109 void StartRevealForTest(bool hovered);
101 void SetMouseHoveredForTest(bool hovered); 110 void SetMouseHoveredForTest(bool hovered);
102 111
103 private: 112 private:
104 friend class ImmersiveModeControllerAshTest; 113 friend class ImmersiveModeControllerAshTest;
105 114
106 enum Animate { 115 enum Animate {
107 ANIMATE_NO, 116 ANIMATE_NO,
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 // If non-NULL, sets |observer| to be notified when the animation completes. 200 // If non-NULL, sets |observer| to be notified when the animation completes.
192 void DoLayerAnimation(ui::Layer* layer, 201 void DoLayerAnimation(ui::Layer* layer,
193 const gfx::Transform& target_transform, 202 const gfx::Transform& target_transform,
194 int duration_ms, 203 int duration_ms,
195 ui::ImplicitAnimationObserver* observer); 204 ui::ImplicitAnimationObserver* observer);
196 205
197 // Returns the type of swipe given |event|. 206 // Returns the type of swipe given |event|.
198 SwipeType GetSwipeType(ui::GestureEvent* event) const; 207 SwipeType GetSwipeType(ui::GestureEvent* event) const;
199 208
200 // True when |location| is "near" to the top container. When the top container 209 // True when |location| is "near" to the top container. When the top container
201 // is not closed "near" means within the displayed bounds. When the top 210 // is not closed "near" means within the displayed bounds or above it. When
202 // container is closed "near" means either within the displayed bounds or 211 // the top container is closed "near" means either within the displayed
203 // within a few pixels of it. This allow the container to steal enough pixels 212 // bounds, above it, or within a few pixels below it. This allow the container
204 // to detect a swipe in. 213 // to steal enough pixels to detect a swipe in and handles the case that there
205 bool IsNearTopContainer(gfx::Point location) const; 214 // is a bezel sensor above the top container.
215 bool ShouldHandleEvent(const gfx::Point& location) const;
216
217 // Call Add/RemovePreTargerHandler since either the RootWindow has changed or
218 // the enabled state of observing has changed.
219 void UpdatePreTargetHandler();
206 220
207 // Injected dependencies. Not owned. 221 // Injected dependencies. Not owned.
208 Delegate* delegate_; 222 Delegate* delegate_;
209 views::Widget* widget_; 223 views::Widget* widget_;
210 TopContainerView* top_container_; 224 TopContainerView* top_container_;
211 225
212 // True if the window observers are enabled. 226 // True if the window observers are enabled.
213 bool observers_enabled_; 227 bool observers_enabled_;
214 228
215 // True when in immersive mode. 229 // True when in immersive mode.
(...skipping 16 matching lines...) Expand all
232 int mouse_x_when_hit_top_; 246 int mouse_x_when_hit_top_;
233 247
234 // Lock which keeps the top-of-window views revealed based on the current 248 // Lock which keeps the top-of-window views revealed based on the current
235 // mouse state. 249 // mouse state.
236 scoped_ptr<ImmersiveRevealedLock> mouse_revealed_lock_; 250 scoped_ptr<ImmersiveRevealedLock> mouse_revealed_lock_;
237 251
238 // Lock which keeps the top-of-window views revealed based on the focused view 252 // Lock which keeps the top-of-window views revealed based on the focused view
239 // and the active widget. 253 // and the active widget.
240 scoped_ptr<ImmersiveRevealedLock> focus_revealed_lock_; 254 scoped_ptr<ImmersiveRevealedLock> focus_revealed_lock_;
241 255
242 // Native window for the browser, needed to clean up observers. 256 // Native window for the browser.
243 aura::Window* native_window_; 257 aura::Window* native_window_;
244 258
245 // Observer to disable immersive mode when window leaves the maximized state.
246 class WindowObserver;
247 scoped_ptr<WindowObserver> window_observer_;
248
249 // Manages widgets which are anchored to the top-of-window views. 259 // Manages widgets which are anchored to the top-of-window views.
250 class AnchoredWidgetManager; 260 class AnchoredWidgetManager;
251 scoped_ptr<AnchoredWidgetManager> anchored_widget_manager_; 261 scoped_ptr<AnchoredWidgetManager> anchored_widget_manager_;
252 262
253 content::NotificationRegistrar registrar_; 263 content::NotificationRegistrar registrar_;
254 264
255 base::WeakPtrFactory<ImmersiveModeControllerAsh> weak_ptr_factory_; 265 base::WeakPtrFactory<ImmersiveModeControllerAsh> weak_ptr_factory_;
256 266
257 // Tracks if the controller has seen a ET_GESTURE_SCROLL_BEGIN, without the 267 // Tracks if the controller has seen a ET_GESTURE_SCROLL_BEGIN, without the
258 // following events. 268 // following events.
259 bool gesture_begun_; 269 bool gesture_begun_;
260 270
261 DISALLOW_COPY_AND_ASSIGN(ImmersiveModeControllerAsh); 271 DISALLOW_COPY_AND_ASSIGN(ImmersiveModeControllerAsh);
262 }; 272 };
263 273
264 #endif // CHROME_BROWSER_UI_VIEWS_FRAME_IMMERSIVE_MODE_CONTROLLER_ASH_H_ 274 #endif // CHROME_BROWSER_UI_VIEWS_FRAME_IMMERSIVE_MODE_CONTROLLER_ASH_H_
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/ui/views/frame/immersive_mode_controller_ash.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698