Make Mac menu code obey incognito availability.

BUG=170053
TEST=as in bug


Review URL: https://chromiumcodereview.appspot.com/11906008

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@178093 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/ui/browser_command_controller.cc b/chrome/browser/ui/browser_command_controller.cc
index 7231d5a4..291b0211 100644
--- a/chrome/browser/ui/browser_command_controller.cc
+++ b/chrome/browser/ui/browser_command_controller.cc
@@ -878,7 +878,7 @@
   command_updater_.UpdateCommandEnabled(IDC_ZOOM_MINUS, true);
 
   // Show various bits of UI
-  UpdateOpenFileState();
+  UpdateOpenFileState(&command_updater_);
   command_updater_.UpdateCommandEnabled(IDC_CREATE_SHORTCUTS, false);
   UpdateCommandsForDevTools();
   command_updater_.UpdateCommandEnabled(IDC_TASK_MANAGER, CanOpenTaskManager());
@@ -953,13 +953,16 @@
   UpdateCommandsForIncognitoAvailability();
 }
 
-void BrowserCommandController::UpdateCommandsForIncognitoAvailability() {
+// static
+void BrowserCommandController::UpdateSharedCommandsForIncognitoAvailability(
+    CommandUpdater* command_updater,
+    Profile* profile) {
   IncognitoModePrefs::Availability incognito_availability =
-      IncognitoModePrefs::GetAvailability(profile()->GetPrefs());
-  command_updater_.UpdateCommandEnabled(
+      IncognitoModePrefs::GetAvailability(profile->GetPrefs());
+  command_updater->UpdateCommandEnabled(
       IDC_NEW_WINDOW,
       incognito_availability != IncognitoModePrefs::FORCED);
-  command_updater_.UpdateCommandEnabled(
+  command_updater->UpdateCommandEnabled(
       IDC_NEW_INCOGNITO_WINDOW,
       incognito_availability != IncognitoModePrefs::DISABLED);
 
@@ -967,21 +970,28 @@
   // mode. For this reason we disable these commands when incognito is forced.
   const bool command_enabled =
       incognito_availability != IncognitoModePrefs::FORCED;
-  command_updater_.UpdateCommandEnabled(
+  command_updater->UpdateCommandEnabled(
       IDC_SHOW_BOOKMARK_MANAGER,
       browser_defaults::bookmarks_enabled && command_enabled);
-  ExtensionService* extension_service = profile()->GetExtensionService();
+  ExtensionService* extension_service = profile->GetExtensionService();
   bool enable_extensions =
       extension_service && extension_service->extensions_enabled();
-  command_updater_.UpdateCommandEnabled(IDC_MANAGE_EXTENSIONS,
+  command_updater->UpdateCommandEnabled(IDC_MANAGE_EXTENSIONS,
                                         enable_extensions && command_enabled);
 
+  command_updater->UpdateCommandEnabled(IDC_IMPORT_SETTINGS, command_enabled);
+  command_updater->UpdateCommandEnabled(IDC_OPTIONS, command_enabled);
+}
+
+void BrowserCommandController::UpdateCommandsForIncognitoAvailability() {
+  UpdateSharedCommandsForIncognitoAvailability(&command_updater_, profile());
+
   const bool show_main_ui =
       IsShowingMainUI(window() && window()->IsFullscreen());
-  command_updater_.UpdateCommandEnabled(IDC_IMPORT_SETTINGS,
-                                        show_main_ui && command_enabled);
-  command_updater_.UpdateCommandEnabled(IDC_OPTIONS,
-                                        show_main_ui && command_enabled);
+  if (!show_main_ui) {
+    command_updater_.UpdateCommandEnabled(IDC_IMPORT_SETTINGS, false);
+    command_updater_.UpdateCommandEnabled(IDC_OPTIONS, false);
+  }
 }
 
 void BrowserCommandController::UpdateCommandsForTabState() {
@@ -1084,7 +1094,7 @@
 
 void BrowserCommandController::UpdateCommandsForFileSelectionDialogs() {
   UpdateSaveAsState();
-  UpdateOpenFileState();
+  UpdateOpenFileState(&command_updater_);
 }
 
 void BrowserCommandController::UpdateCommandsForFullscreenMode(
@@ -1193,13 +1203,15 @@
   command_updater_.UpdateCommandEnabled(IDC_SAVE_PAGE, CanSavePage(browser_));
 }
 
-void BrowserCommandController::UpdateOpenFileState() {
+// static
+void BrowserCommandController::UpdateOpenFileState(
+    CommandUpdater* command_updater) {
   bool enabled = true;
   PrefService* local_state = g_browser_process->local_state();
   if (local_state)
     enabled = local_state->GetBoolean(prefs::kAllowFileSelectionDialogs);
 
-  command_updater_.UpdateCommandEnabled(IDC_OPEN_FILE, enabled);
+  command_updater->UpdateCommandEnabled(IDC_OPEN_FILE, enabled);
 }
 
 void BrowserCommandController::UpdateReloadStopState(bool is_loading,