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

Unified Diff: chrome/browser/ui/browser_command_controller.cc

Issue 22986010: Add policy for fullscreen mode; disallow fullscreen in public sessions (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add an explanation of fullscreen mode. Created 7 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/browser_command_controller.cc
diff --git a/chrome/browser/ui/browser_command_controller.cc b/chrome/browser/ui/browser_command_controller.cc
index 16d4f41bebdb622578dfeb53d31d82fa48971bf4..762fc4023cb4083f60773a139f98c55c89919f01 100644
--- a/chrome/browser/ui/browser_command_controller.cc
+++ b/chrome/browser/ui/browser_command_controller.cc
@@ -60,6 +60,18 @@ using content::WebContents;
namespace {
+enum FullScreenMode {
+ // Not in fullscreen mode.
+ FULLSCREEN_DISABLED,
sky 2013/08/22 21:33:55 Am I the only one that finds this name totally mis
scheib 2013/08/22 23:57:26 WINDOW_STATE_NORMAL, WINDOW_STATE_FULLSCREEN, WIND
sky 2013/08/23 00:00:37 Much better, but NORMAL is a bit ambiguous here, I
bartfab (slow) 2013/08/23 11:54:21 Done.
+
+ // Fullscreen mode, occupying the whole screen.
+ FULLSCREEN_NORMAL,
+
+ // Fullscreen mode for metro snap, occupying the full height and 20% of
+ // the screen width.
+ FULLSCREEN_METRO_SNAP,
+};
+
// Returns |true| if entry has an internal chrome:// URL, |false| otherwise.
bool HasInternalURL(const NavigationEntry* entry) {
if (!entry)
@@ -197,6 +209,12 @@ BrowserCommandController::BrowserCommandController(
prefs::kPrintingEnabled,
base::Bind(&BrowserCommandController::UpdatePrintingState,
base::Unretained(this)));
+#if !defined(OS_MACOSX)
+ profile_pref_registrar_.Add(
+ prefs::kFullscreenAllowed,
+ base::Bind(&BrowserCommandController::UpdateCommandsForFullscreenMode,
+ base::Unretained(this)));
+#endif
pref_signin_allowed_.Init(
prefs::kSigninAllowed,
profile()->GetOriginalProfile()->GetPrefs(),
@@ -286,16 +304,7 @@ void BrowserCommandController::ContentRestrictionsChanged() {
}
void BrowserCommandController::FullscreenStateChanged() {
- FullScreenMode fullscreen_mode = FULLSCREEN_DISABLED;
- if (window()->IsFullscreen()) {
-#if defined(OS_WIN)
- fullscreen_mode = window()->IsInMetroSnapMode() ? FULLSCREEN_METRO_SNAP :
- FULLSCREEN_NORMAL;
-#else
- fullscreen_mode = FULLSCREEN_NORMAL;
-#endif
- }
- UpdateCommandsForFullscreenMode(fullscreen_mode);
+ UpdateCommandsForFullscreenMode();
}
void BrowserCommandController::PrintingStateChanged() {
@@ -936,7 +945,7 @@ void BrowserCommandController::InitCommandState() {
command_updater_.UpdateCommandEnabled(IDC_TOGGLE_SPEECH_INPUT, true);
// Initialize other commands whose state changes based on fullscreen mode.
- UpdateCommandsForFullscreenMode(FULLSCREEN_DISABLED);
+ UpdateCommandsForFullscreenMode();
UpdateCommandsForContentRestrictionState();
@@ -1087,8 +1096,16 @@ void BrowserCommandController::UpdateCommandsForFileSelectionDialogs() {
UpdateOpenFileState(&command_updater_);
}
-void BrowserCommandController::UpdateCommandsForFullscreenMode(
- FullScreenMode fullscreen_mode) {
+void BrowserCommandController::UpdateCommandsForFullscreenMode() {
+ FullScreenMode fullscreen_mode = FULLSCREEN_DISABLED;
+ if (window() && window()->IsFullscreen()) {
+#if defined(OS_WIN)
+ fullscreen_mode = window()->IsInMetroSnapMode() ? FULLSCREEN_METRO_SNAP :
+ FULLSCREEN_NORMAL;
+#else
+ fullscreen_mode = FULLSCREEN_NORMAL;
+#endif
+ }
bool show_main_ui = IsShowingMainUI();
bool main_not_fullscreen = show_main_ui &&
(fullscreen_mode == FULLSCREEN_DISABLED);
@@ -1145,6 +1162,12 @@ void BrowserCommandController::UpdateCommandsForFullscreenMode(
int tab_index = chrome::IndexOfFirstBlockedTab(browser_->tab_strip_model());
bool has_blocked_tab = tab_index != browser_->tab_strip_model()->count();
fullscreen_enabled &= !has_blocked_tab;
+#else
+ if (fullscreen_mode == FULLSCREEN_DISABLED &&
+ !profile()->GetPrefs()->GetBoolean(prefs::kFullscreenAllowed)) {
+ // Disable toggling into fullscreen mode if disallowed by pref.
+ fullscreen_enabled = false;
+ }
#endif
command_updater_.UpdateCommandEnabled(IDC_FULLSCREEN, fullscreen_enabled);

Powered by Google App Engine
This is Rietveld 408576698