Chromium Code Reviews| 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); |