Disable view source for Developer Tools.
[chromium-blink-merge.git] / chrome / browser / ui / views / frame / immersive_mode_controller_ash.h
blob7f693342e07144248394af650ed10192579a5e83
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
3 // found in the LICENSE file.
5 #ifndef CHROME_BROWSER_UI_VIEWS_FRAME_IMMERSIVE_MODE_CONTROLLER_ASH_H_
6 #define CHROME_BROWSER_UI_VIEWS_FRAME_IMMERSIVE_MODE_CONTROLLER_ASH_H_
8 #include "chrome/browser/ui/views/frame/immersive_mode_controller.h"
10 #include "ash/wm/immersive_fullscreen_controller.h"
11 #include "ash/wm/window_state_observer.h"
12 #include "base/memory/scoped_ptr.h"
13 #include "content/public/browser/notification_observer.h"
14 #include "content/public/browser/notification_registrar.h"
15 #include "ui/gfx/rect.h"
17 namespace aura {
18 class Window;
21 class ImmersiveModeControllerAsh
22 : public ImmersiveModeController,
23 public ash::ImmersiveFullscreenController::Delegate,
24 public ash::wm::WindowStateObserver,
25 public content::NotificationObserver {
26 public:
27 ImmersiveModeControllerAsh();
28 virtual ~ImmersiveModeControllerAsh();
30 // ImmersiveModeController overrides:
31 virtual void Init(BrowserView* browser_view) OVERRIDE;
32 virtual void SetEnabled(bool enabled) OVERRIDE;
33 virtual bool IsEnabled() const OVERRIDE;
34 virtual bool ShouldHideTabIndicators() const OVERRIDE;
35 virtual bool ShouldHideTopViews() const OVERRIDE;
36 virtual bool IsRevealed() const OVERRIDE;
37 virtual int GetTopContainerVerticalOffset(
38 const gfx::Size& top_container_size) const OVERRIDE;
39 virtual ImmersiveRevealedLock* GetRevealedLock(
40 AnimateReveal animate_reveal) OVERRIDE WARN_UNUSED_RESULT;
41 virtual void OnFindBarVisibleBoundsChanged(
42 const gfx::Rect& new_visible_bounds_in_screen) OVERRIDE;
43 virtual void SetupForTest() OVERRIDE;
45 private:
46 // Enables or disables observers for window restore and entering / exiting
47 // tab fullscreen.
48 void EnableWindowObservers(bool enable);
50 // Updates the browser root view's layout including window caption controls.
51 void LayoutBrowserRootView();
53 // Shrinks or expands the touch hit test by updating insets for the render
54 // window depending on if top_inset is positive or negative respectively.
55 // Used to ensure that touch events at the top of the screen go to the top
56 // container so a slide gesture can be generated when the content window is
57 // consuming all touch events sent to it.
58 void SetRenderWindowTopInsetsForTouch(int top_inset);
60 // Updates whether the tab strip is painted in a short "light bar" style.
61 // Returns true if the visibility of the tab indicators has changed.
62 bool UpdateTabIndicators();
64 // ImmersiveFullscreenController::Delegate overrides:
65 virtual void OnImmersiveRevealStarted() OVERRIDE;
66 virtual void OnImmersiveRevealEnded() OVERRIDE;
67 virtual void OnImmersiveFullscreenExited() OVERRIDE;
68 virtual void SetVisibleFraction(double visible_fraction) OVERRIDE;
69 virtual std::vector<gfx::Rect> GetVisibleBoundsInScreen() const OVERRIDE;
71 // ash::wm::WindowStateObserver override:
72 virtual void OnWindowShowTypeChanged(
73 ash::wm::WindowState* window_state,
74 ash::wm::WindowShowType old_type) OVERRIDE;
76 // content::NotificationObserver override:
77 virtual void Observe(int type,
78 const content::NotificationSource& source,
79 const content::NotificationDetails& details) OVERRIDE;
81 scoped_ptr<ash::ImmersiveFullscreenController> controller_;
83 // Not owned.
84 BrowserView* browser_view_;
85 aura::Window* native_window_;
87 // True if the observers for window restore and entering / exiting tab
88 // fullscreen are enabled.
89 bool observers_enabled_;
91 // Whether a short "light bar" version of the tab strip should be painted when
92 // the top-of-window views are closed. If |use_tab_indicators_| is false, the
93 // tab strip is not painted at all when the top-of-window views are closed.
94 bool use_tab_indicators_;
96 // The current visible bounds of the find bar, in screen coordinates. This is
97 // an empty rect if the find bar is not visible.
98 gfx::Rect find_bar_visible_bounds_in_screen_;
100 // The fraction of the TopContainerView's height which is visible. Zero when
101 // the top-of-window views are not revealed regardless of
102 // |use_tab_indicators_|.
103 double visible_fraction_;
105 content::NotificationRegistrar registrar_;
107 DISALLOW_COPY_AND_ASSIGN(ImmersiveModeControllerAsh);
110 #endif // CHROME_BROWSER_UI_VIEWS_FRAME_IMMERSIVE_MODE_CONTROLLER_ASH_H_