Metro mode switching (chrome side)
This change puts a menu option to restart chrome in desktop or
to restart chrome in metro mode and then wires up to the restart
helper.
BUG=141032
TEST=see bug
Review URL: https://chromiumcodereview.appspot.com/10885047
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@155263 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/ui/browser_command_controller.cc b/chrome/browser/ui/browser_command_controller.cc
index fec9e70e..fdb6b50 100644
--- a/chrome/browser/ui/browser_command_controller.cc
+++ b/chrome/browser/ui/browser_command_controller.cc
@@ -68,6 +68,18 @@
return false;
}
+#if defined(OS_WIN)
+void RestartWithModeSwitch() {
+ PrefService* prefs = g_browser_process->local_state();
+ if (!prefs)
+ return;
+ if (!prefs->HasPrefPath(prefs::kRestartSwitchMode))
+ return;
+ prefs->SetBoolean(prefs::kRestartSwitchMode, true);
+ browser::AttemptRestart();
+}
+#endif
+
} // namespace
namespace chrome {
@@ -330,14 +342,23 @@
case IDC_FULLSCREEN:
chrome::ToggleFullscreenMode(browser_);
break;
+
#if defined(OS_WIN)
+ // Windows 8 specific commands.
case IDC_METRO_SNAP_ENABLE:
browser_->SetMetroSnapMode(true);
break;
case IDC_METRO_SNAP_DISABLE:
browser_->SetMetroSnapMode(false);
break;
+ case IDC_WIN8_DESKTOP_RESTART:
+ RestartWithModeSwitch();
+ break;
+ case IDC_WIN8_METRO_RESTART:
+ RestartWithModeSwitch();
+ break;
#endif
+
#if defined(OS_MACOSX)
case IDC_PRESENTATION_MODE:
browser_->TogglePresentationMode();
@@ -790,6 +811,9 @@
const bool metro_mode = base::win::IsMetroProcess();
command_updater_.UpdateCommandEnabled(IDC_METRO_SNAP_ENABLE, metro_mode);
command_updater_.UpdateCommandEnabled(IDC_METRO_SNAP_DISABLE, metro_mode);
+ int restart_mode = metro_mode ?
+ IDC_WIN8_DESKTOP_RESTART : IDC_WIN8_METRO_RESTART;
+ command_updater_.UpdateCommandEnabled(restart_mode, normal_window);
#endif
#if defined(OS_MACOSX)
command_updater_.UpdateCommandEnabled(IDC_TABPOSE, normal_window);