Chromium Code Reviews| Index: chrome/browser/ui/views/frame/immersive_mode_controller_ash.h |
| diff --git a/chrome/browser/ui/views/frame/immersive_mode_controller_ash.h b/chrome/browser/ui/views/frame/immersive_mode_controller_ash.h |
| index 15d004e04781489259c6eda826c39b4e7bea5547..e970f8db1140771c3ea33387021c342de58e1d79 100644 |
| --- a/chrome/browser/ui/views/frame/immersive_mode_controller_ash.h |
| +++ b/chrome/browser/ui/views/frame/immersive_mode_controller_ash.h |
| @@ -10,6 +10,7 @@ |
| #include "base/timer.h" |
| #include "content/public/browser/notification_observer.h" |
| #include "content/public/browser/notification_registrar.h" |
| +#include "ui/aura/window_observer.h" |
| #include "ui/base/events/event_handler.h" |
| #include "ui/compositor/layer_animation_observer.h" |
| #include "ui/views/focus/focus_manager.h" |
| @@ -40,7 +41,8 @@ class ImmersiveModeControllerAsh : public ImmersiveModeController, |
| public ui::EventHandler, |
| public ui::ImplicitAnimationObserver, |
| public views::FocusChangeListener, |
| - public views::WidgetObserver { |
| + public views::WidgetObserver, |
| + public aura::WindowObserver { |
| public: |
| ImmersiveModeControllerAsh(); |
| virtual ~ImmersiveModeControllerAsh(); |
| @@ -95,6 +97,13 @@ class ImmersiveModeControllerAsh : public ImmersiveModeController, |
| // ui::ImplicitAnimationObserver override: |
| virtual void OnImplicitAnimationsCompleted() OVERRIDE; |
| + // aura::WindowObserver overrides: |
| + virtual void OnWindowPropertyChanged(aura::Window* window, |
| + const void* key, |
| + intptr_t old) OVERRIDE; |
| + virtual void OnWindowAddedToRootWindow(aura::Window* window) OVERRIDE; |
| + virtual void OnWindowRemovedFromRootWindow(aura::Window* window) OVERRIDE; |
| + |
| // Testing interface. |
| void SetForceHideTabIndicatorsForTest(bool force); |
| void StartRevealForTest(bool hovered); |
| @@ -202,7 +211,11 @@ class ImmersiveModeControllerAsh : public ImmersiveModeController, |
| // container is closed "near" means either within the displayed bounds or |
| // within a few pixels of it. This allow the container to steal enough pixels |
| // to detect a swipe in. |
| - bool IsNearTopContainer(gfx::Point location) const; |
| + bool ShouldHandleEvent(const gfx::Point& location) const; |
| + |
| + // Call Add/RemovePreTargerHandler since either the RootWindow has changed or |
| + // the enabled state of observing has changed. |
| + void SetPreTargetHandler(); |
|
James Cook
2013/05/28 16:29:42
nit: Consider making this UpdatePreTargetHandler(b
rharrison
2013/05/28 17:03:01
Done.
|
| // Injected dependencies. Not owned. |
| Delegate* delegate_; |
| @@ -239,13 +252,9 @@ class ImmersiveModeControllerAsh : public ImmersiveModeController, |
| // and the active widget. |
| scoped_ptr<ImmersiveRevealedLock> focus_revealed_lock_; |
| - // Native window for the browser, needed to clean up observers. |
| + // Native window for the browser. |
| aura::Window* native_window_; |
| - // Observer to disable immersive mode when window leaves the maximized state. |
| - class WindowObserver; |
| - scoped_ptr<WindowObserver> window_observer_; |
| - |
| // Manages widgets which are anchored to the top-of-window views. |
| class AnchoredWidgetManager; |
| scoped_ptr<AnchoredWidgetManager> anchored_widget_manager_; |