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

Side by Side Diff: chrome/browser/ui/browser.h

Issue 8423035: Split out fullscreen logic from Browser into FullscreenController. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: nits Created 9 years, 1 month 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/browser.cc » ('j') | chrome/browser/ui/browser.cc » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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_BROWSER_H_ 5 #ifndef CHROME_BROWSER_UI_BROWSER_H_
6 #define CHROME_BROWSER_UI_BROWSER_H_ 6 #define CHROME_BROWSER_UI_BROWSER_H_
7 #pragma once 7 #pragma once
8 8
9 #include <map> 9 #include <map>
10 #include <set> 10 #include <set>
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 #include "content/public/common/page_transition_types.h" 48 #include "content/public/common/page_transition_types.h"
49 #include "content/public/common/page_zoom.h" 49 #include "content/public/common/page_zoom.h"
50 #include "ui/base/ui_base_types.h" 50 #include "ui/base/ui_base_types.h"
51 #include "ui/gfx/rect.h" 51 #include "ui/gfx/rect.h"
52 52
53 class BrowserSyncedWindowDelegate; 53 class BrowserSyncedWindowDelegate;
54 class BrowserTabRestoreServiceDelegate; 54 class BrowserTabRestoreServiceDelegate;
55 class BrowserWindow; 55 class BrowserWindow;
56 class Extension; 56 class Extension;
57 class FindBarController; 57 class FindBarController;
58 class FullscreenController;
58 class InstantController; 59 class InstantController;
59 class InstantUnloadHandler; 60 class InstantUnloadHandler;
60 class PrefService; 61 class PrefService;
61 class Profile; 62 class Profile;
62 class SessionStorageNamespace; 63 class SessionStorageNamespace;
63 class SkBitmap; 64 class SkBitmap;
64 class StatusBubble; 65 class StatusBubble;
65 class TabNavigation; 66 class TabNavigation;
66 class TabStripModel; 67 class TabStripModel;
67 struct WebApplicationInfo; 68 struct WebApplicationInfo;
(...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after
487 void ShowSingletonTabOverwritingNTP(const browser::NavigateParams& params); 488 void ShowSingletonTabOverwritingNTP(const browser::NavigateParams& params);
488 489
489 // Creates a NavigateParams struct for a singleton tab navigation. 490 // Creates a NavigateParams struct for a singleton tab navigation.
490 browser::NavigateParams GetSingletonTabNavigateParams(const GURL& url); 491 browser::NavigateParams GetSingletonTabNavigateParams(const GURL& url);
491 492
492 // Invoked when the fullscreen state of the window changes. 493 // Invoked when the fullscreen state of the window changes.
493 // BrowserWindow::EnterFullscreen invokes this after the window has become 494 // BrowserWindow::EnterFullscreen invokes this after the window has become
494 // fullscreen. 495 // fullscreen.
495 void WindowFullscreenStateChanged(); 496 void WindowFullscreenStateChanged();
496 497
497 // Sends a notification that the fullscreen state has changed.
498 void NotifyFullscreenChange();
499
500 // Assorted browser commands //////////////////////////////////////////////// 498 // Assorted browser commands ////////////////////////////////////////////////
501 499
502 // NOTE: Within each of the following sections, the IDs are ordered roughly by 500 // NOTE: Within each of the following sections, the IDs are ordered roughly by
503 // how they appear in the GUI/menus (left to right, top to bottom, etc.). 501 // how they appear in the GUI/menus (left to right, top to bottom, etc.).
504 502
505 // Navigation commands 503 // Navigation commands
506 bool CanGoBack() const; 504 bool CanGoBack() const;
507 void GoBack(WindowOpenDisposition disposition); 505 void GoBack(WindowOpenDisposition disposition);
508 bool CanGoForward() const; 506 bool CanGoForward() const;
509 void GoForward(WindowOpenDisposition disposition); 507 void GoForward(WindowOpenDisposition disposition);
(...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after
826 int from_index, 824 int from_index,
827 int to_index); 825 int to_index);
828 virtual void TabReplacedAt(TabStripModel* tab_strip_model, 826 virtual void TabReplacedAt(TabStripModel* tab_strip_model,
829 TabContentsWrapper* old_contents, 827 TabContentsWrapper* old_contents,
830 TabContentsWrapper* new_contents, 828 TabContentsWrapper* new_contents,
831 int index); 829 int index);
832 virtual void TabPinnedStateChanged(TabContentsWrapper* contents, int index); 830 virtual void TabPinnedStateChanged(TabContentsWrapper* contents, int index);
833 virtual void TabStripEmpty(); 831 virtual void TabStripEmpty();
834 832
835 // Fullscreen permission infobar callbacks. 833 // Fullscreen permission infobar callbacks.
836 void OnAcceptFullscreenPermission(const GURL& url, 834 void OnAcceptFullscreenPermission(const GURL& url,
yzshen1 2011/11/04 01:56:32 You could make fullscreen exit bubble directly not
koz (OOO until 15th September) 2011/11/06 23:30:20 Would you mind if I do that in a follow up change?
yzshen1 2011/11/08 00:55:41 Okay. On 2011/11/06 23:30:20, koz wrote:
837 FullscreenExitBubbleType bubble_type); 835 FullscreenExitBubbleType bubble_type);
838 void OnDenyFullscreenPermission(FullscreenExitBubbleType bubble_type); 836 void OnDenyFullscreenPermission(FullscreenExitBubbleType bubble_type);
839 ContentSetting GetFullscreenSetting(const GURL& url);
840 ContentSetting GetMouseLockSetting(const GURL& url);
841 837
842 // Figure out if there are tabs that have beforeunload handlers. 838 // Figure out if there are tabs that have beforeunload handlers.
843 bool TabsNeedBeforeUnloadFired(); 839 bool TabsNeedBeforeUnloadFired();
844 840
845 bool is_type_tabbed() const { return type_ == TYPE_TABBED; } 841 bool is_type_tabbed() const { return type_ == TYPE_TABBED; }
846 bool is_type_popup() const { return type_ == TYPE_POPUP; } 842 bool is_type_popup() const { return type_ == TYPE_POPUP; }
847 bool is_type_panel() const { return type_ == TYPE_PANEL; } 843 bool is_type_panel() const { return type_ == TYPE_PANEL; }
848 844
849 bool is_app() const; 845 bool is_app() const;
850 bool is_devtools() const; 846 bool is_devtools() const;
851 847
852 // True when the current tab is in fullscreen mode, requested by 848 // True when the current tab is in fullscreen mode, requested by
853 // webkitRequestFullScreen. 849 // webkitRequestFullScreen.
854 bool is_fullscreen_for_tab() const { return fullscreened_tab_ != NULL; } 850 bool IsFullscreenForTab() const;
855 851
856 // Called each time the browser window is shown. 852 // Called each time the browser window is shown.
857 void OnWindowDidShow(); 853 void OnWindowDidShow();
858 854
859 protected: 855 protected:
860 // Wrapper for the factory method in BrowserWindow. This allows subclasses to 856 // Wrapper for the factory method in BrowserWindow. This allows subclasses to
861 // set their own window. 857 // set their own window.
862 virtual BrowserWindow* CreateBrowserWindow(); 858 virtual BrowserWindow* CreateBrowserWindow();
863 859
864 private: 860 private:
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
902 // Change is the result of the bookmark bar pref changing. 898 // Change is the result of the bookmark bar pref changing.
903 BOOKMARK_BAR_STATE_CHANGE_PREF_CHANGE, 899 BOOKMARK_BAR_STATE_CHANGE_PREF_CHANGE,
904 900
905 // Change is the result of a state change in the active tab. 901 // Change is the result of a state change in the active tab.
906 BOOKMARK_BAR_STATE_CHANGE_TAB_STATE, 902 BOOKMARK_BAR_STATE_CHANGE_TAB_STATE,
907 903
908 // Change is the result of window toggling in/out of fullscreen mode. 904 // Change is the result of window toggling in/out of fullscreen mode.
909 BOOKMARK_BAR_STATE_CHANGE_TOGGLE_FULLSCREEN, 905 BOOKMARK_BAR_STATE_CHANGE_TOGGLE_FULLSCREEN,
910 }; 906 };
911 907
912 enum MouseLockState {
913 MOUSELOCK_NOT_REQUESTED,
914 // The page requests to lock the mouse and the user hasn't responded to the
915 // request.
916 MOUSELOCK_REQUESTED,
917 // Mouse lock has been allowed by the user.
918 MOUSELOCK_ACCEPTED
919 };
920
921 // Overridden from TabContentsDelegate: 908 // Overridden from TabContentsDelegate:
922 // Deprecated. Please use two-argument variant. 909 // Deprecated. Please use two-argument variant.
923 // TODO(adriansc): Remove this method once refactoring changed all call sites. 910 // TODO(adriansc): Remove this method once refactoring changed all call sites.
924 virtual TabContents* OpenURLFromTab( 911 virtual TabContents* OpenURLFromTab(
925 TabContents* source, 912 TabContents* source,
926 const GURL& url, 913 const GURL& url,
927 const GURL& referrer, 914 const GURL& referrer,
928 WindowOpenDisposition disposition, 915 WindowOpenDisposition disposition,
929 content::PageTransition transition) OVERRIDE; 916 content::PageTransition transition) OVERRIDE;
930 virtual TabContents* OpenURLFromTab(TabContents* source, 917 virtual TabContents* OpenURLFromTab(TabContents* source,
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
1153 // this to return NULL if called before the toolbar has initialized. 1140 // this to return NULL if called before the toolbar has initialized.
1154 // TODO(beng): remove this. 1141 // TODO(beng): remove this.
1155 StatusBubble* GetStatusBubble(); 1142 StatusBubble* GetStatusBubble();
1156 1143
1157 // Session restore functions //////////////////////////////////////////////// 1144 // Session restore functions ////////////////////////////////////////////////
1158 1145
1159 // Notifies the history database of the index for all tabs whose index is 1146 // Notifies the history database of the index for all tabs whose index is
1160 // >= index. 1147 // >= index.
1161 void SyncHistoryWithTabs(int index); 1148 void SyncHistoryWithTabs(int index);
1162 1149
1163 // Tab fullscreen functions /////////////////////////////////////////////////
1164
1165 // There are two different kinds of fullscreen mode - "tab fullscreen" and
1166 // "browser fullscreen". "Tab fullscreen" refers to when a tab enters
1167 // fullscreen mode via the JS fullscreen API, and "browser fullscreen"
1168 // refers to the user putting the browser itself into fullscreen mode from
1169 // the UI. The difference is that tab fullscreen has implications for how
1170 // the contents of the tab render (eg: a video element may grow to consume
1171 // the whole tab), whereas browser fullscreen mode doesn't. Therefore if a
1172 // user forces an exit from fullscreen, we need to notify the tab so it can
1173 // stop rendering in its fullscreen mode.
1174
1175 // Make the current tab exit fullscreen mode if it is in it.
1176 void ExitTabbedFullscreenModeIfNecessary();
1177
1178 // Notifies the tab that it has been forced out of fullscreen mode if
1179 // necessary.
1180 void NotifyTabOfFullscreenExitIfNecessary();
1181
1182 // OnBeforeUnload handling ////////////////////////////////////////////////// 1150 // OnBeforeUnload handling //////////////////////////////////////////////////
1183 1151
1184 typedef std::set<TabContents*> UnloadListenerSet; 1152 typedef std::set<TabContents*> UnloadListenerSet;
1185 1153
1186 // Processes the next tab that needs it's beforeunload/unload event fired. 1154 // Processes the next tab that needs it's beforeunload/unload event fired.
1187 void ProcessPendingTabs(); 1155 void ProcessPendingTabs();
1188 1156
1189 // Whether we've completed firing all the tabs' beforeunload/unload events. 1157 // Whether we've completed firing all the tabs' beforeunload/unload events.
1190 bool HasCompletedUnloadProcessing() const; 1158 bool HasCompletedUnloadProcessing() const;
1191 1159
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
1291 void OpenBookmarkManagerWithHash(const std::string& action, int64 node_id); 1259 void OpenBookmarkManagerWithHash(const std::string& action, int64 node_id);
1292 1260
1293 // Make the current tab exit fullscreen mode. If the browser was fullscreen 1261 // Make the current tab exit fullscreen mode. If the browser was fullscreen
1294 // because of that (as opposed to the user clicking the fullscreen button) 1262 // because of that (as opposed to the user clicking the fullscreen button)
1295 // then take the browser out of fullscreen mode as well. 1263 // then take the browser out of fullscreen mode as well.
1296 void ExitTabbedFullscreenMode(); 1264 void ExitTabbedFullscreenMode();
1297 1265
1298 // Notifies the tab that it has been forced out of fullscreen mode. 1266 // Notifies the tab that it has been forced out of fullscreen mode.
1299 void NotifyTabOfFullscreenExit(); 1267 void NotifyTabOfFullscreenExit();
1300 1268
1301 // Determines what should be shown in the fullscreen exit bubble.
1302 FullscreenExitBubbleType GetFullscreenExitBubbleType() const;
1303
1304 // Updates the content of the fullscreen exit bubble.
1305 void UpdateFullscreenExitBubbleContent();
1306
1307 // Data members ///////////////////////////////////////////////////////////// 1269 // Data members /////////////////////////////////////////////////////////////
1308 1270
1309 content::NotificationRegistrar registrar_; 1271 content::NotificationRegistrar registrar_;
1310 1272
1311 PrefChangeRegistrar profile_pref_registrar_; 1273 PrefChangeRegistrar profile_pref_registrar_;
1312 1274
1313 PrefChangeRegistrar local_pref_registrar_; 1275 PrefChangeRegistrar local_pref_registrar_;
1314 1276
1315 // This Browser's type. 1277 // This Browser's type.
1316 const Type type_; 1278 const Type type_;
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
1437 scoped_ptr<BrowserTabRestoreServiceDelegate> tab_restore_service_delegate_; 1399 scoped_ptr<BrowserTabRestoreServiceDelegate> tab_restore_service_delegate_;
1438 1400
1439 // Helper which implements the SyncedWindowDelegate interface. 1401 // Helper which implements the SyncedWindowDelegate interface.
1440 scoped_ptr<BrowserSyncedWindowDelegate> synced_window_delegate_; 1402 scoped_ptr<BrowserSyncedWindowDelegate> synced_window_delegate_;
1441 1403
1442 scoped_ptr<InstantController> instant_; 1404 scoped_ptr<InstantController> instant_;
1443 scoped_ptr<InstantUnloadHandler> instant_unload_handler_; 1405 scoped_ptr<InstantUnloadHandler> instant_unload_handler_;
1444 1406
1445 BookmarkBar::State bookmark_bar_state_; 1407 BookmarkBar::State bookmark_bar_state_;
1446 1408
1447 // If there is currently a tab in fullscreen mode (entered via
1448 // webkitRequestFullScreen), this is its wrapper.
1449 TabContentsWrapper* fullscreened_tab_;
1450
1451 // True if the current tab entered fullscreen mode via webkitRequestFullScreen
1452 bool tab_caused_fullscreen_;
1453 // True if tab fullscreen has been allowed, either by settings or by user
1454 // clicking the allow button on the fullscreen infobar.
1455 bool tab_fullscreen_accepted_;
1456
1457 MouseLockState mouse_lock_state_;
1458
1459 // True if the browser window has been shown at least once. 1409 // True if the browser window has been shown at least once.
1460 bool window_has_shown_; 1410 bool window_has_shown_;
1461 1411
1412 FullscreenController* fullscreen_controller_;
Peter Kasting 2011/11/03 18:24:56 Nit: I'd put this above |window_has_shown_|
tfarina 2011/11/04 01:09:31 Aren't we leaking this? Could you use scoped_ptr?
koz (OOO until 15th September) 2011/11/06 23:30:20 Done.
koz (OOO until 15th September) 2011/11/06 23:30:20 Done.
1413
1462 DISALLOW_COPY_AND_ASSIGN(Browser); 1414 DISALLOW_COPY_AND_ASSIGN(Browser);
1463 }; 1415 };
1464 1416
1465 #endif // CHROME_BROWSER_UI_BROWSER_H_ 1417 #endif // CHROME_BROWSER_UI_BROWSER_H_
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/ui/browser.cc » ('j') | chrome/browser/ui/browser.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698