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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 #include "chrome/browser/ui/browser_command_controller.h" 5 #include "chrome/browser/ui/browser_command_controller.h"
6 6
7 #include "base/prefs/pref_service.h" 7 #include "base/prefs/pref_service.h"
8 #include "chrome/app/chrome_command_ids.h" 8 #include "chrome/app/chrome_command_ids.h"
9 #include "chrome/browser/browser_process.h" 9 #include "chrome/browser/browser_process.h"
10 #include "chrome/browser/chrome_notification_types.h" 10 #include "chrome/browser/chrome_notification_types.h"
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 #if defined(USE_ASH) 53 #if defined(USE_ASH)
54 #include "chrome/browser/ui/ash/ash_util.h" 54 #include "chrome/browser/ui/ash/ash_util.h"
55 #endif 55 #endif
56 56
57 using content::NavigationEntry; 57 using content::NavigationEntry;
58 using content::NavigationController; 58 using content::NavigationController;
59 using content::WebContents; 59 using content::WebContents;
60 60
61 namespace { 61 namespace {
62 62
63 enum FullScreenMode {
64 // Not in fullscreen mode.
65 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.
66
67 // Fullscreen mode, occupying the whole screen.
68 FULLSCREEN_NORMAL,
69
70 // Fullscreen mode for metro snap, occupying the full height and 20% of
71 // the screen width.
72 FULLSCREEN_METRO_SNAP,
73 };
74
63 // Returns |true| if entry has an internal chrome:// URL, |false| otherwise. 75 // Returns |true| if entry has an internal chrome:// URL, |false| otherwise.
64 bool HasInternalURL(const NavigationEntry* entry) { 76 bool HasInternalURL(const NavigationEntry* entry) {
65 if (!entry) 77 if (!entry)
66 return false; 78 return false;
67 79
68 // Check the |virtual_url()| first. This catches regular chrome:// URLs 80 // Check the |virtual_url()| first. This catches regular chrome:// URLs
69 // including URLs that were rewritten (such as chrome://bookmarks). 81 // including URLs that were rewritten (such as chrome://bookmarks).
70 if (entry->GetVirtualURL().SchemeIs(chrome::kChromeUIScheme)) 82 if (entry->GetVirtualURL().SchemeIs(chrome::kChromeUIScheme))
71 return true; 83 return true;
72 84
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 base::Unretained(this))); 202 base::Unretained(this)));
191 profile_pref_registrar_.Add( 203 profile_pref_registrar_.Add(
192 prefs::kIncognitoModeAvailability, 204 prefs::kIncognitoModeAvailability,
193 base::Bind( 205 base::Bind(
194 &BrowserCommandController::UpdateCommandsForIncognitoAvailability, 206 &BrowserCommandController::UpdateCommandsForIncognitoAvailability,
195 base::Unretained(this))); 207 base::Unretained(this)));
196 profile_pref_registrar_.Add( 208 profile_pref_registrar_.Add(
197 prefs::kPrintingEnabled, 209 prefs::kPrintingEnabled,
198 base::Bind(&BrowserCommandController::UpdatePrintingState, 210 base::Bind(&BrowserCommandController::UpdatePrintingState,
199 base::Unretained(this))); 211 base::Unretained(this)));
212 #if !defined(OS_MACOSX)
213 profile_pref_registrar_.Add(
214 prefs::kFullscreenAllowed,
215 base::Bind(&BrowserCommandController::UpdateCommandsForFullscreenMode,
216 base::Unretained(this)));
217 #endif
200 pref_signin_allowed_.Init( 218 pref_signin_allowed_.Init(
201 prefs::kSigninAllowed, 219 prefs::kSigninAllowed,
202 profile()->GetOriginalProfile()->GetPrefs(), 220 profile()->GetOriginalProfile()->GetPrefs(),
203 base::Bind(&BrowserCommandController::OnSigninAllowedPrefChange, 221 base::Bind(&BrowserCommandController::OnSigninAllowedPrefChange,
204 base::Unretained(this))); 222 base::Unretained(this)));
205 223
206 InitCommandState(); 224 InitCommandState();
207 225
208 TabRestoreService* tab_restore_service = 226 TabRestoreService* tab_restore_service =
209 TabRestoreServiceFactory::GetForProfile(profile()); 227 TabRestoreServiceFactory::GetForProfile(profile());
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 297
280 void BrowserCommandController::TabStateChanged() { 298 void BrowserCommandController::TabStateChanged() {
281 UpdateCommandsForTabState(); 299 UpdateCommandsForTabState();
282 } 300 }
283 301
284 void BrowserCommandController::ContentRestrictionsChanged() { 302 void BrowserCommandController::ContentRestrictionsChanged() {
285 UpdateCommandsForContentRestrictionState(); 303 UpdateCommandsForContentRestrictionState();
286 } 304 }
287 305
288 void BrowserCommandController::FullscreenStateChanged() { 306 void BrowserCommandController::FullscreenStateChanged() {
289 FullScreenMode fullscreen_mode = FULLSCREEN_DISABLED; 307 UpdateCommandsForFullscreenMode();
290 if (window()->IsFullscreen()) {
291 #if defined(OS_WIN)
292 fullscreen_mode = window()->IsInMetroSnapMode() ? FULLSCREEN_METRO_SNAP :
293 FULLSCREEN_NORMAL;
294 #else
295 fullscreen_mode = FULLSCREEN_NORMAL;
296 #endif
297 }
298 UpdateCommandsForFullscreenMode(fullscreen_mode);
299 } 308 }
300 309
301 void BrowserCommandController::PrintingStateChanged() { 310 void BrowserCommandController::PrintingStateChanged() {
302 UpdatePrintingState(); 311 UpdatePrintingState();
303 } 312 }
304 313
305 void BrowserCommandController::LoadingStateChanged(bool is_loading, 314 void BrowserCommandController::LoadingStateChanged(bool is_loading,
306 bool force) { 315 bool force) {
307 UpdateReloadStopState(is_loading, force); 316 UpdateReloadStopState(is_loading, force);
308 } 317 }
(...skipping 620 matching lines...) Expand 10 before | Expand all | Expand 10 after
929 // The upgrade entry and the view incompatibility entry should always be 938 // The upgrade entry and the view incompatibility entry should always be
930 // enabled. Whether they are visible is a separate matter determined on menu 939 // enabled. Whether they are visible is a separate matter determined on menu
931 // show. 940 // show.
932 command_updater_.UpdateCommandEnabled(IDC_UPGRADE_DIALOG, true); 941 command_updater_.UpdateCommandEnabled(IDC_UPGRADE_DIALOG, true);
933 command_updater_.UpdateCommandEnabled(IDC_VIEW_INCOMPATIBILITIES, true); 942 command_updater_.UpdateCommandEnabled(IDC_VIEW_INCOMPATIBILITIES, true);
934 943
935 // Toggle speech input 944 // Toggle speech input
936 command_updater_.UpdateCommandEnabled(IDC_TOGGLE_SPEECH_INPUT, true); 945 command_updater_.UpdateCommandEnabled(IDC_TOGGLE_SPEECH_INPUT, true);
937 946
938 // Initialize other commands whose state changes based on fullscreen mode. 947 // Initialize other commands whose state changes based on fullscreen mode.
939 UpdateCommandsForFullscreenMode(FULLSCREEN_DISABLED); 948 UpdateCommandsForFullscreenMode();
940 949
941 UpdateCommandsForContentRestrictionState(); 950 UpdateCommandsForContentRestrictionState();
942 951
943 UpdateCommandsForBookmarkEditing(); 952 UpdateCommandsForBookmarkEditing();
944 953
945 UpdateCommandsForIncognitoAvailability(); 954 UpdateCommandsForIncognitoAvailability();
946 } 955 }
947 956
948 // static 957 // static
949 void BrowserCommandController::UpdateSharedCommandsForIncognitoAvailability( 958 void BrowserCommandController::UpdateSharedCommandsForIncognitoAvailability(
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
1080 browser_defaults::bookmarks_enabled && 1089 browser_defaults::bookmarks_enabled &&
1081 !profile()->GetPrefs()->IsManagedPreference(prefs::kShowBookmarkBar) && 1090 !profile()->GetPrefs()->IsManagedPreference(prefs::kShowBookmarkBar) &&
1082 IsShowingMainUI()); 1091 IsShowingMainUI());
1083 } 1092 }
1084 1093
1085 void BrowserCommandController::UpdateCommandsForFileSelectionDialogs() { 1094 void BrowserCommandController::UpdateCommandsForFileSelectionDialogs() {
1086 UpdateSaveAsState(); 1095 UpdateSaveAsState();
1087 UpdateOpenFileState(&command_updater_); 1096 UpdateOpenFileState(&command_updater_);
1088 } 1097 }
1089 1098
1090 void BrowserCommandController::UpdateCommandsForFullscreenMode( 1099 void BrowserCommandController::UpdateCommandsForFullscreenMode() {
1091 FullScreenMode fullscreen_mode) { 1100 FullScreenMode fullscreen_mode = FULLSCREEN_DISABLED;
1101 if (window() && window()->IsFullscreen()) {
1102 #if defined(OS_WIN)
1103 fullscreen_mode = window()->IsInMetroSnapMode() ? FULLSCREEN_METRO_SNAP :
1104 FULLSCREEN_NORMAL;
1105 #else
1106 fullscreen_mode = FULLSCREEN_NORMAL;
1107 #endif
1108 }
1092 bool show_main_ui = IsShowingMainUI(); 1109 bool show_main_ui = IsShowingMainUI();
1093 bool main_not_fullscreen = show_main_ui && 1110 bool main_not_fullscreen = show_main_ui &&
1094 (fullscreen_mode == FULLSCREEN_DISABLED); 1111 (fullscreen_mode == FULLSCREEN_DISABLED);
1095 1112
1096 // Navigation commands 1113 // Navigation commands
1097 command_updater_.UpdateCommandEnabled(IDC_OPEN_CURRENT_URL, show_main_ui); 1114 command_updater_.UpdateCommandEnabled(IDC_OPEN_CURRENT_URL, show_main_ui);
1098 1115
1099 // Window management commands 1116 // Window management commands
1100 command_updater_.UpdateCommandEnabled( 1117 command_updater_.UpdateCommandEnabled(
1101 IDC_SHOW_AS_TAB, 1118 IDC_SHOW_AS_TAB,
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1138 #endif 1155 #endif
1139 1156
1140 // Disable explicit fullscreen toggling when in metro snap mode. 1157 // Disable explicit fullscreen toggling when in metro snap mode.
1141 bool fullscreen_enabled = fullscreen_mode != FULLSCREEN_METRO_SNAP; 1158 bool fullscreen_enabled = fullscreen_mode != FULLSCREEN_METRO_SNAP;
1142 #if defined(OS_MACOSX) 1159 #if defined(OS_MACOSX)
1143 // The Mac implementation doesn't support switching to fullscreen while 1160 // The Mac implementation doesn't support switching to fullscreen while
1144 // a tab modal dialog is displayed. 1161 // a tab modal dialog is displayed.
1145 int tab_index = chrome::IndexOfFirstBlockedTab(browser_->tab_strip_model()); 1162 int tab_index = chrome::IndexOfFirstBlockedTab(browser_->tab_strip_model());
1146 bool has_blocked_tab = tab_index != browser_->tab_strip_model()->count(); 1163 bool has_blocked_tab = tab_index != browser_->tab_strip_model()->count();
1147 fullscreen_enabled &= !has_blocked_tab; 1164 fullscreen_enabled &= !has_blocked_tab;
1165 #else
1166 if (fullscreen_mode == FULLSCREEN_DISABLED &&
1167 !profile()->GetPrefs()->GetBoolean(prefs::kFullscreenAllowed)) {
1168 // Disable toggling into fullscreen mode if disallowed by pref.
1169 fullscreen_enabled = false;
1170 }
1148 #endif 1171 #endif
1149 1172
1150 command_updater_.UpdateCommandEnabled(IDC_FULLSCREEN, fullscreen_enabled); 1173 command_updater_.UpdateCommandEnabled(IDC_FULLSCREEN, fullscreen_enabled);
1151 command_updater_.UpdateCommandEnabled(IDC_PRESENTATION_MODE, 1174 command_updater_.UpdateCommandEnabled(IDC_PRESENTATION_MODE,
1152 fullscreen_enabled); 1175 fullscreen_enabled);
1153 1176
1154 UpdateCommandsForBookmarkBar(); 1177 UpdateCommandsForBookmarkBar();
1155 UpdateCommandsForMultipleProfiles(); 1178 UpdateCommandsForMultipleProfiles();
1156 } 1179 }
1157 1180
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
1238 1261
1239 BrowserWindow* BrowserCommandController::window() { 1262 BrowserWindow* BrowserCommandController::window() {
1240 return browser_->window(); 1263 return browser_->window();
1241 } 1264 }
1242 1265
1243 Profile* BrowserCommandController::profile() { 1266 Profile* BrowserCommandController::profile() {
1244 return browser_->profile(); 1267 return browser_->profile();
1245 } 1268 }
1246 1269
1247 } // namespace chrome 1270 } // namespace chrome
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698