OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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_FULLSCREEN_FULLSCREEN_CONTROLLER_H_ | 5 #ifndef CHROME_BROWSER_UI_FULLSCREEN_FULLSCREEN_CONTROLLER_H_ |
6 #define CHROME_BROWSER_UI_FULLSCREEN_FULLSCREEN_CONTROLLER_H_ | 6 #define CHROME_BROWSER_UI_FULLSCREEN_FULLSCREEN_CONTROLLER_H_ |
7 | 7 |
8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" |
9 #include "base/memory/weak_ptr.h" | 9 #include "base/memory/weak_ptr.h" |
10 #include "chrome/browser/ui/fullscreen/fullscreen_exit_bubble_type.h" | 10 #include "chrome/browser/ui/fullscreen/fullscreen_exit_bubble_type.h" |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
57 bool IsFullscreenForTabOrPending() const; | 57 bool IsFullscreenForTabOrPending() const; |
58 bool IsFullscreenForTabOrPending( | 58 bool IsFullscreenForTabOrPending( |
59 const content::WebContents* web_contents) const; | 59 const content::WebContents* web_contents) const; |
60 // True if fullscreen was entered because of tab fullscreen (was not | 60 // True if fullscreen was entered because of tab fullscreen (was not |
61 // previously in browser fullscreen). | 61 // previously in browser fullscreen). |
62 bool IsFullscreenCausedByTab() const; | 62 bool IsFullscreenCausedByTab() const; |
63 | 63 |
64 void ToggleFullscreenModeForTab(content::WebContents* web_contents, | 64 void ToggleFullscreenModeForTab(content::WebContents* web_contents, |
65 bool enter_fullscreen); | 65 bool enter_fullscreen); |
66 | 66 |
| 67 // Presentation API Fullscreen ////////////////////////////////////////////// |
| 68 void TogglePresentationMode(); |
| 69 bool IsPresentationFullscreen(); |
| 70 |
67 // Extension API implementation uses this method to toggle fullscreen mode. | 71 // Extension API implementation uses this method to toggle fullscreen mode. |
68 // The extension's name is displayed in the full screen bubble UI to attribute | 72 // The extension's name is displayed in the full screen bubble UI to attribute |
69 // the cause of the full screen state change. | 73 // the cause of the full screen state change. |
70 void ToggleFullscreenModeWithExtension(const GURL& extension_url); | 74 void ToggleFullscreenModeWithExtension(const GURL& extension_url); |
71 | 75 |
72 // Platform Fullscreen /////////////////////////////////////////////////////// | 76 // Platform Fullscreen /////////////////////////////////////////////////////// |
73 | 77 |
74 // Returns whether we are currently in a Metro snap view. | 78 // Returns whether we are currently in a Metro snap view. |
75 bool IsInMetroSnapMode(); | 79 bool IsInMetroSnapMode(); |
76 | 80 |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
137 MOUSELOCK_ACCEPTED, | 141 MOUSELOCK_ACCEPTED, |
138 // Mouse lock has been silently accepted, no notification to user. | 142 // Mouse lock has been silently accepted, no notification to user. |
139 MOUSELOCK_ACCEPTED_SILENTLY | 143 MOUSELOCK_ACCEPTED_SILENTLY |
140 }; | 144 }; |
141 | 145 |
142 enum FullscreenInternalOption { | 146 enum FullscreenInternalOption { |
143 BROWSER, | 147 BROWSER, |
144 #if defined(OS_MACOSX) | 148 #if defined(OS_MACOSX) |
145 BROWSER_WITH_CHROME, | 149 BROWSER_WITH_CHROME, |
146 #endif | 150 #endif |
147 TAB | 151 TAB, |
| 152 PRESENTATION // a special BROWSER mode with a different Exit Bubble, |
| 153 // which leads to closing the browser window. |
148 }; | 154 }; |
149 | 155 |
150 void UpdateNotificationRegistrations(); | 156 void UpdateNotificationRegistrations(); |
151 | 157 |
152 // Posts a task to call NotifyFullscreenChange. | 158 // Posts a task to call NotifyFullscreenChange. |
153 void PostFullscreenChangeNotification(bool is_fullscreen); | 159 void PostFullscreenChangeNotification(bool is_fullscreen); |
154 // Sends a NOTIFICATION_FULLSCREEN_CHANGED notification. | 160 // Sends a NOTIFICATION_FULLSCREEN_CHANGED notification. |
155 void NotifyFullscreenChange(bool is_fullscreen); | 161 void NotifyFullscreenChange(bool is_fullscreen); |
156 // Notifies the tab that it has been forced out of fullscreen and mouse lock | 162 // Notifies the tab that it has been forced out of fullscreen and mouse lock |
157 // mode if necessary. | 163 // mode if necessary. |
158 void NotifyTabOfExitIfNecessary(); | 164 void NotifyTabOfExitIfNecessary(); |
159 void NotifyMouseLockChange(); | 165 void NotifyMouseLockChange(); |
160 | 166 |
161 void ToggleFullscreenModeInternal(FullscreenInternalOption option); | 167 void ToggleFullscreenModeInternal(FullscreenInternalOption option); |
162 void EnterFullscreenModeInternal(FullscreenInternalOption option); | 168 void EnterFullscreenModeInternal(FullscreenInternalOption option); |
163 void ExitFullscreenModeInternal(); | 169 void ExitFullscreenModeInternal(); |
164 void SetFullscreenedTab(content::WebContents* tab); | 170 void SetFullscreenedTab(content::WebContents* tab); |
165 void SetMouseLockTab(content::WebContents* tab); | 171 void SetMouseLockTab(content::WebContents* tab); |
| 172 void SetPresentationTab(content::WebContents* tab); |
166 | 173 |
167 // Make the current tab exit fullscreen mode or mouse lock if it is in it. | 174 // Make the current tab exit fullscreen mode or mouse lock if it is in it. |
168 void ExitTabFullscreenOrMouseLockIfNecessary(); | 175 void ExitTabFullscreenOrMouseLockIfNecessary(); |
169 void UpdateFullscreenExitBubbleContent(); | 176 void UpdateFullscreenExitBubbleContent(); |
170 | 177 |
171 ContentSetting GetFullscreenSetting(const GURL& url) const; | 178 ContentSetting GetFullscreenSetting(const GURL& url) const; |
172 ContentSetting GetMouseLockSetting(const GURL& url) const; | 179 ContentSetting GetMouseLockSetting(const GURL& url) const; |
173 | 180 |
174 bool IsPrivilegedFullscreenForTab() const; | 181 bool IsPrivilegedFullscreenForTab() const; |
175 void SetPrivilegedFullscreenForTesting(bool is_privileged); | 182 void SetPrivilegedFullscreenForTesting(bool is_privileged); |
(...skipping 26 matching lines...) Expand all Loading... |
202 // clicking the allow button on the fullscreen infobar. | 209 // clicking the allow button on the fullscreen infobar. |
203 bool tab_fullscreen_accepted_; | 210 bool tab_fullscreen_accepted_; |
204 | 211 |
205 // True if this controller has toggled into tab OR browser fullscreen. | 212 // True if this controller has toggled into tab OR browser fullscreen. |
206 bool toggled_into_fullscreen_; | 213 bool toggled_into_fullscreen_; |
207 | 214 |
208 // WebContents for current tab requesting or currently in mouse lock. | 215 // WebContents for current tab requesting or currently in mouse lock. |
209 // Assign using SetMouseLockTab(). | 216 // Assign using SetMouseLockTab(). |
210 content::WebContents* mouse_lock_tab_; | 217 content::WebContents* mouse_lock_tab_; |
211 | 218 |
| 219 bool is_presentation_browser_fullscreen; |
| 220 |
212 MouseLockState mouse_lock_state_; | 221 MouseLockState mouse_lock_state_; |
213 | 222 |
214 content::NotificationRegistrar registrar_; | 223 content::NotificationRegistrar registrar_; |
215 | 224 |
216 // Used to verify that calls we expect to reenter by calling | 225 // Used to verify that calls we expect to reenter by calling |
217 // WindowFullscreenStateChanged do so. | 226 // WindowFullscreenStateChanged do so. |
218 bool reentrant_window_state_change_call_check_; | 227 bool reentrant_window_state_change_call_check_; |
219 | 228 |
220 // Used in testing to confirm proper behavior for specific, privileged | 229 // Used in testing to confirm proper behavior for specific, privileged |
221 // fullscreen cases. | 230 // fullscreen cases. |
222 bool is_privileged_fullscreen_for_testing_; | 231 bool is_privileged_fullscreen_for_testing_; |
223 | 232 |
224 base::WeakPtrFactory<FullscreenController> ptr_factory_; | 233 base::WeakPtrFactory<FullscreenController> ptr_factory_; |
225 | 234 |
226 DISALLOW_COPY_AND_ASSIGN(FullscreenController); | 235 DISALLOW_COPY_AND_ASSIGN(FullscreenController); |
227 }; | 236 }; |
228 | 237 |
229 #endif // CHROME_BROWSER_UI_FULLSCREEN_FULLSCREEN_CONTROLLER_H_ | 238 #endif // CHROME_BROWSER_UI_FULLSCREEN_FULLSCREEN_CONTROLLER_H_ |
OLD | NEW |