diff options
author | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-20 03:12:12 +0000 |
---|---|---|
committer | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-20 03:12:12 +0000 |
commit | cae97656821756121ae569faa1100963c8b5d4d2 (patch) | |
tree | 244ffc6a91916c8f81889deec8e3aa6090fb3227 | |
parent | 9bbb5c279cb33ee4ce45c8fe0c03e022f158a159 (diff) | |
download | chromium_src-cae97656821756121ae569faa1100963c8b5d4d2.zip chromium_src-cae97656821756121ae569faa1100963c8b5d4d2.tar.gz chromium_src-cae97656821756121ae569faa1100963c8b5d4d2.tar.bz2 |
Move a lot of ChromeOS stuff out of Browser and onto various Ash-related helpers.
BUG=none
TEST=none
TBR=davemoore
Review URL: https://chromiumcodereview.appspot.com/10035061
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@133138 0039d316-1c4b-4281-b951-d872f2087c98
25 files changed, 199 insertions, 265 deletions
diff --git a/ash/accelerators/accelerator_controller.cc b/ash/accelerators/accelerator_controller.cc index a72c7d2..0af9e59 100644 --- a/ash/accelerators/accelerator_controller.cc +++ b/ash/accelerators/accelerator_controller.cc @@ -110,18 +110,17 @@ void HandleCycleWindowLinear(ash::WindowCycleController::Direction direction) { #if defined(OS_CHROMEOS) bool HandleLock() { - ash::ShellDelegate* delegate = ash::Shell::GetInstance()->delegate(); - if (!delegate) - return false; - delegate->LockScreen(); + ash::Shell::GetInstance()->delegate()->LockScreen(); return true; } bool HandleFileManager() { - ash::ShellDelegate* delegate = ash::Shell::GetInstance()->delegate(); - if (!delegate) - return false; - delegate->OpenFileManager(); + ash::Shell::GetInstance()->delegate()->OpenFileManager(); + return true; +} + +bool HandleCrosh() { + ash::Shell::GetInstance()->delegate()->OpenCrosh(); return true; } #endif @@ -346,6 +345,8 @@ bool AcceleratorController::AcceleratorPressed( return HandleLock(); case OPEN_FILE_MANAGER: return HandleFileManager(); + case OPEN_CROSH: + return HandleCrosh(); #endif case EXIT: return HandleExit(); @@ -367,8 +368,8 @@ bool AcceleratorController::AcceleratorPressed( // Return true to prevent propagation of the key event because // this key combination is reserved for partial screenshot. return true; - case TOGGLE_APP_LIST: - ash::Shell::GetInstance()->ToggleAppList(); + case SEARCH_KEY: + ash::Shell::GetInstance()->delegate()->Search(); break; case TOGGLE_CAPS_LOCK: if (caps_lock_delegate_.get()) diff --git a/ash/accelerators/accelerator_table.cc b/ash/accelerators/accelerator_table.cc index cf841b3..47690f9 100644 --- a/ash/accelerators/accelerator_table.cc +++ b/ash/accelerators/accelerator_table.cc @@ -39,6 +39,7 @@ const AcceleratorData kAcceleratorData[] = { { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_L, true, true, false, LOCK_SCREEN }, { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_M, false, true, false, OPEN_FILE_MANAGER }, + { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_T, false, true, true, OPEN_CROSH }, #endif { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_Q, true, true, false, EXIT }, { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_N, true, true, false, @@ -54,7 +55,7 @@ const AcceleratorData kAcceleratorData[] = { TAKE_SCREENSHOT }, // On Chrome OS, Search key is mapped to LWIN. { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_LWIN, false, true, false, - TOGGLE_APP_LIST }, + SEARCH_KEY }, { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_LWIN, true, false, false, TOGGLE_CAPS_LOCK }, { ui::ET_TRANSLATED_KEY_PRESS, ui::VKEY_F6, false, false, false, diff --git a/ash/accelerators/accelerator_table.h b/ash/accelerators/accelerator_table.h index a960eee..1c072a3 100644 --- a/ash/accelerators/accelerator_table.h +++ b/ash/accelerators/accelerator_table.h @@ -25,7 +25,7 @@ enum AcceleratorAction { SWITCH_IME, // Switch to another IME depending on the accelerator. TAKE_SCREENSHOT, TAKE_PARTIAL_SCREENSHOT, - TOGGLE_APP_LIST, + SEARCH_KEY, TOGGLE_CAPS_LOCK, VOLUME_DOWN, VOLUME_MUTE, @@ -35,6 +35,7 @@ enum AcceleratorAction { #if defined(OS_CHROMEOS) LOCK_SCREEN, OPEN_FILE_MANAGER, + OPEN_CROSH, #endif SELECT_WIN_0, SELECT_WIN_1, diff --git a/ash/shell/shell_delegate_impl.cc b/ash/shell/shell_delegate_impl.cc index 334e597..c2bfdc0 100644 --- a/ash/shell/shell_delegate_impl.cc +++ b/ash/shell/shell_delegate_impl.cc @@ -49,7 +49,7 @@ bool ShellDelegateImpl::IsScreenLocked() const { return locked_; } -void ShellDelegateImpl::OpenFileManager() { +void ShellDelegateImpl::Shutdown() { } void ShellDelegateImpl::Exit() { @@ -63,6 +63,18 @@ void ShellDelegateImpl::NewWindow(bool incognito) { ash::shell::ToplevelWindow::CreateToplevelWindow(create_params); } +void ShellDelegateImpl::Search() { +} + +void ShellDelegateImpl::OpenFileManager() { +} + +void ShellDelegateImpl::OpenCrosh() { +} + +void ShellDelegateImpl::OpenMobileSetup() { +} + ash::AppListViewDelegate* ShellDelegateImpl::CreateAppListViewDelegate() { return ash::shell::CreateAppListViewDelegate(); } diff --git a/ash/shell/shell_delegate_impl.h b/ash/shell/shell_delegate_impl.h index b0709f6..b3905e0 100644 --- a/ash/shell/shell_delegate_impl.h +++ b/ash/shell/shell_delegate_impl.h @@ -26,9 +26,13 @@ class ShellDelegateImpl : public ash::ShellDelegate { virtual void LockScreen() OVERRIDE; virtual void UnlockScreen() OVERRIDE; virtual bool IsScreenLocked() const OVERRIDE; - virtual void OpenFileManager() OVERRIDE; + virtual void Shutdown() OVERRIDE; virtual void Exit() OVERRIDE; virtual void NewWindow(bool incognito) OVERRIDE; + virtual void Search() OVERRIDE; + virtual void OpenFileManager() OVERRIDE; + virtual void OpenCrosh() OVERRIDE; + virtual void OpenMobileSetup() OVERRIDE; virtual ash::AppListViewDelegate* CreateAppListViewDelegate() OVERRIDE; virtual void StartPartialScreenshot( ash::ScreenshotDelegate* screenshot_delegate) OVERRIDE; diff --git a/ash/shell_delegate.h b/ash/shell_delegate.h index bf687fd..0a86aa3 100644 --- a/ash/shell_delegate.h +++ b/ash/shell_delegate.h @@ -50,15 +50,27 @@ class ASH_EXPORT ShellDelegate { // Returns true if the screen is currently locked. virtual bool IsScreenLocked() const = 0; - // Invoked when a user uses Ctrl-M to open file manager. - virtual void OpenFileManager() = 0; + // Shuts down the environment. + virtual void Shutdown() = 0; - // Invoked when a user uses Ctrl-Shift-Q to close chrome. + // Invoked when the user uses Ctrl-Shift-Q to close chrome. virtual void Exit() = 0; - // Invoked when a user uses Ctrl-N or Ctrl-Shift-N to open a new window. + // Invoked when the user uses Ctrl-N or Ctrl-Shift-N to open a new window. virtual void NewWindow(bool incognito) = 0; + // Invoked when the user presses the Search key. + virtual void Search() = 0; + + // Invoked when the user uses Ctrl-M to open file manager. + virtual void OpenFileManager() = 0; + + // Invoked when the user opens Crosh. + virtual void OpenCrosh() = 0; + + // Invoked when the user needs to set up mobile networking. + virtual void OpenMobileSetup() = 0; + // Invoked to create an AppListViewDelegate. Shell takes the ownership of // the created delegate. virtual AppListViewDelegate* CreateAppListViewDelegate() = 0; diff --git a/ash/test/test_shell_delegate.cc b/ash/test/test_shell_delegate.cc index d24d34b..f3dbea5 100644 --- a/ash/test/test_shell_delegate.cc +++ b/ash/test/test_shell_delegate.cc @@ -38,7 +38,7 @@ bool TestShellDelegate::IsScreenLocked() const { return locked_; } -void TestShellDelegate::OpenFileManager() { +void TestShellDelegate::Shutdown() { } void TestShellDelegate::Exit() { @@ -47,6 +47,18 @@ void TestShellDelegate::Exit() { void TestShellDelegate::NewWindow(bool incognito) { } +void TestShellDelegate::Search() { +} + +void TestShellDelegate::OpenFileManager() { +} + +void TestShellDelegate::OpenCrosh() { +} + +void TestShellDelegate::OpenMobileSetup() { +} + AppListViewDelegate* TestShellDelegate::CreateAppListViewDelegate() { return NULL; } diff --git a/ash/test/test_shell_delegate.h b/ash/test/test_shell_delegate.h index 0751126..1788a4a 100644 --- a/ash/test/test_shell_delegate.h +++ b/ash/test/test_shell_delegate.h @@ -22,9 +22,13 @@ class TestShellDelegate : public ShellDelegate { virtual void LockScreen() OVERRIDE; virtual void UnlockScreen() OVERRIDE; virtual bool IsScreenLocked() const OVERRIDE; - virtual void OpenFileManager() OVERRIDE; + virtual void Shutdown() OVERRIDE; virtual void Exit() OVERRIDE; virtual void NewWindow(bool incognito) OVERRIDE; + virtual void Search() OVERRIDE; + virtual void OpenFileManager() OVERRIDE; + virtual void OpenCrosh() OVERRIDE; + virtual void OpenMobileSetup() OVERRIDE; virtual AppListViewDelegate* CreateAppListViewDelegate() OVERRIDE; virtual void StartPartialScreenshot( ScreenshotDelegate* screenshot_delegate) OVERRIDE; diff --git a/chrome/app/chrome_command_ids.h b/chrome/app/chrome_command_ids.h index 952f812..cc2dd2b 100644 --- a/chrome/app/chrome_command_ids.h +++ b/chrome/app/chrome_command_ids.h @@ -167,7 +167,6 @@ #define IDC_VIEW_BACKGROUND_PAGES 40025 #define IDC_SHOW_KEYBOARD_OVERLAY 40026 #define IDC_PROFILING_ENABLED 40027 -#define IDC_FILE_MANAGER 40028 #define IDC_BOOKMARKS_MENU 40029 #define IDC_SHOW_SYNC_SETUP 40030 #define IDC_EXTENSION_ERRORS 40031 @@ -216,11 +215,6 @@ // Identifiers for platform-specific items. // Placed in a common file to help insure they never collide. #define IDC_VIEW_MENU 44000 // OSX only -#define IDC_INTERNET_OPTIONS 45100 // ChromeOS only -#define IDC_LANGUAGE_OPTIONS 45200 // ChromeOS only -#define IDC_LOCK_SCREEN 45300 // ChromeOS only -#define IDC_SHUTDOWN 45400 // ChromeOS only -#define IDC_NEW_CROSH_TAB 45500 // ChromeOS Aura only #define IDC_HISTORY_MENU 46000 // OSX only #define IDC_PROFILE_MAIN_MENU 46100 // OSX only #define IDC_INPUT_METHODS_MENU 46300 // Linux only diff --git a/chrome/browser/browser_commands_unittest.cc b/chrome/browser/browser_commands_unittest.cc index ea4d148..0013670 100644 --- a/chrome/browser/browser_commands_unittest.cc +++ b/chrome/browser/browser_commands_unittest.cc @@ -176,38 +176,3 @@ TEST_F(BrowserCommandsTest, BackForwardInNewTab) { ASSERT_EQ(url2, browser()->GetSelectedWebContents()->GetURL()); } -// Tests IDC_SEARCH (the Search key on Chrome OS devices). -#if defined(OS_CHROMEOS) - -namespace chromeos { - -TEST_F(BrowserCommandsTest, Search) { - ScopedMockUserManagerEnabler mock_user_manager; - EXPECT_CALL(*mock_user_manager.user_manager(), IsLoggedInAsGuest()) - .Times(1).WillRepeatedly(::testing::Return(false)); - - // Load a non-NTP URL. - GURL non_ntp_url("http://foo/"); - AddTab(browser(), non_ntp_url); - ASSERT_EQ(1, browser()->tab_count()); - EXPECT_EQ(non_ntp_url, browser()->GetSelectedWebContents()->GetURL()); - - // Pressing the Search key should open a new tab containing the NTP. - browser()->Search(); - ASSERT_EQ(2, browser()->tab_count()); - ASSERT_EQ(1, browser()->active_index()); - GURL current_url = browser()->GetSelectedWebContents()->GetURL(); - EXPECT_TRUE(current_url.SchemeIs(chrome::kChromeUIScheme)); - EXPECT_EQ(chrome::kChromeUINewTabHost, current_url.host()); - - // Pressing it a second time while the NTP is open shouldn't change anything. - browser()->Search(); - ASSERT_EQ(2, browser()->tab_count()); - ASSERT_EQ(1, browser()->active_index()); - current_url = browser()->GetSelectedWebContents()->GetURL(); - EXPECT_TRUE(current_url.SchemeIs(chrome::kChromeUIScheme)); - EXPECT_EQ(chrome::kChromeUINewTabHost, current_url.host()); -} - -} // namespace chromeos -#endif diff --git a/chrome/browser/chromeos/network_message_observer.cc b/chrome/browser/chromeos/network_message_observer.cc index 648cdc9..777ad7d 100644 --- a/chrome/browser/chromeos/network_message_observer.cc +++ b/chrome/browser/chromeos/network_message_observer.cc @@ -4,6 +4,8 @@ #include "chrome/browser/chromeos/network_message_observer.h" +#include "ash/shell.h" +#include "ash/shell_delegate.h" #include "base/bind.h" #include "base/callback.h" #include "base/stl_util.h" @@ -79,9 +81,7 @@ bool NetworkMessageObserver::IsApplicableBackupPlan( } void NetworkMessageObserver::OpenMobileSetupPage(const ListValue* args) { - Browser* browser = Browser::GetOrCreateTabbedBrowser( - ProfileManager::GetDefaultProfileOrOffTheRecord()); - browser->OpenMobilePlanTabAndActivate(); + ash::Shell::GetInstance()->delegate()->OpenMobileSetup(); } void NetworkMessageObserver::OpenMoreInfoPage(const ListValue* args) { diff --git a/chrome/browser/chromeos/offline/offline_load_page.cc b/chrome/browser/chromeos/offline/offline_load_page.cc index e7bce3b..ac107da 100644 --- a/chrome/browser/chromeos/offline/offline_load_page.cc +++ b/chrome/browser/chromeos/offline/offline_load_page.cc @@ -4,6 +4,8 @@ #include "chrome/browser/chromeos/offline/offline_load_page.h" +#include "ash/shell.h" +#include "ash/shell_delegate.h" #include "base/i18n/rtl.h" #include "base/metrics/histogram.h" #include "base/string_piece.h" @@ -189,9 +191,7 @@ void OfflineLoadPage::CommandReceived(const std::string& cmd) { DCHECK(browser); browser->ShowOptionsTab(chrome::kInternetOptionsSubPage); } else if (command == "open_activate_broadband") { - Browser* browser = BrowserList::GetLastActive(); - DCHECK(browser); - browser->OpenMobilePlanTabAndActivate(); + ash::Shell::GetInstance()->delegate()->OpenMobileSetup(); } else { LOG(WARNING) << "Unknown command:" << cmd; } diff --git a/chrome/browser/chromeos/status/network_menu.cc b/chrome/browser/chromeos/status/network_menu.cc index 689b629..c86323c 100644 --- a/chrome/browser/chromeos/status/network_menu.cc +++ b/chrome/browser/chromeos/status/network_menu.cc @@ -6,6 +6,8 @@ #include <algorithm> +#include "ash/shell.h" +#include "ash/shell_delegate.h" #include "base/bind.h" #include "base/command_line.h" #include "base/logging.h" @@ -94,9 +96,7 @@ void ActivateCellular(const chromeos::CellularNetwork* cellular) { if (!chromeos::UserManager::Get()->IsUserLoggedIn()) return; - Browser* browser = Browser::GetOrCreateTabbedBrowser( - ProfileManager::GetDefaultProfileOrOffTheRecord()); - browser->OpenMobilePlanTabAndActivate(); + ash::Shell::GetInstance()->delegate()->OpenMobileSetup(); } // Decides whether a network should be highlighted in the UI. diff --git a/chrome/browser/chromeos/system/ash_system_tray_delegate.cc b/chrome/browser/chromeos/system/ash_system_tray_delegate.cc index 2ab63cf..1922b4c 100644 --- a/chrome/browser/chromeos/system/ash_system_tray_delegate.cc +++ b/chrome/browser/chromeos/system/ash_system_tray_delegate.cc @@ -51,10 +51,12 @@ #include "chrome/browser/upgrade_detector.h" #include "chrome/common/chrome_notification_types.h" #include "chrome/common/pref_names.h" +#include "chrome/common/url_constants.h" #include "chromeos/dbus/dbus_thread_manager.h" #include "chromeos/dbus/power_manager_client.h" #include "content/public/browser/notification_observer.h" #include "content/public/browser/notification_service.h" +#include "content/public/browser/user_metrics.h" #include "grit/generated_resources.h" #include "ui/base/l10n/l10n_util.h" @@ -252,11 +254,16 @@ class SystemTrayDelegate : public ash::SystemTrayDelegate, } virtual void ShowDateSettings() OVERRIDE { - GetAppropriateBrowser()->ShowDateOptions(); + content::RecordAction(content::UserMetricsAction("ShowDateOptions")); + std::string sub_page = std::string(chrome::kSearchSubPage) + "#" + + l10n_util::GetStringUTF8(IDS_OPTIONS_SETTINGS_SECTION_TITLE_DATETIME); + GetAppropriateBrowser()->ShowOptionsTab(sub_page); } virtual void ShowNetworkSettings() OVERRIDE { - GetAppropriateBrowser()->OpenInternetOptionsDialog(); + content::RecordAction( + content::UserMetricsAction("OpenInternetOptionsDialog")); + GetAppropriateBrowser()->ShowOptionsTab(chrome::kInternetOptionsSubPage); } virtual void ShowBluetoothSettings() OVERRIDE { @@ -264,7 +271,9 @@ class SystemTrayDelegate : public ash::SystemTrayDelegate, } virtual void ShowIMESettings() OVERRIDE { - GetAppropriateBrowser()->OpenLanguageOptionsDialog(); + content::RecordAction( + content::UserMetricsAction("OpenLanguageOptionsDialog")); + GetAppropriateBrowser()->ShowOptionsTab(chrome::kLanguageOptionsSubPage); } virtual void ShowHelp() OVERRIDE { @@ -524,7 +533,9 @@ class SystemTrayDelegate : public ash::SystemTrayDelegate, virtual void AddBluetoothDevice() OVERRIDE { // Open the Bluetooth device dialog, which automatically starts the // discovery process. - GetAppropriateBrowser()->OpenAddBluetoothDeviceDialog(); + content::RecordAction( + content::UserMetricsAction("OpenAddBluetoothDeviceDialog")); + GetAppropriateBrowser()->ShowOptionsTab(chrome::kBluetoothAddDeviceSubPage); } virtual void ToggleAirplaneMode() OVERRIDE { diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc index 320b9c9..00aa19b 100644 --- a/chrome/browser/ui/browser.cc +++ b/chrome/browser/ui/browser.cc @@ -206,12 +206,6 @@ #if defined(OS_CHROMEOS) #include "chrome/browser/chromeos/boot_times_loader.h" #include "chrome/browser/chromeos/gdata/gdata_util.h" -#include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_settings.h" -#include "chromeos/dbus/dbus_thread_manager.h" -#include "chromeos/dbus/power_manager_client.h" -#if defined(USE_AURA) -#include "chrome/browser/extensions/api/terminal/terminal_extension_helper.h" -#endif #endif #if defined(USE_ASH) @@ -220,10 +214,6 @@ #include "chrome/browser/ui/views/ash/panel_view_aura.h" #endif -#if defined(OS_CHROMEOS) -#include "chrome/browser/chromeos/extensions/file_manager_util.h" -#endif - using base::TimeDelta; using content::NavigationController; using content::NavigationEntry; @@ -316,13 +306,8 @@ bool ParseCommaSeparatedIntegers(const std::string& str, } bool AllowPanels(const std::string& app_name) { -#if (!defined(OS_CHROMEOS) || defined(USE_AURA)) - if (!PanelManager::ShouldUsePanels( - web_app::GetExtensionIdFromApplicationName(app_name))) { - return false; - } -#endif // !OS_CHROMEOS || USE_AURA - return true; + return PanelManager::ShouldUsePanels( + web_app::GetExtensionIdFromApplicationName(app_name)); } } // namespace @@ -1152,8 +1137,8 @@ string16 Browser::GetWindowTitleForCurrentTab() const { if (title.empty()) title = CoreTabHelper::GetDefaultTitle(); -#if defined(OS_MACOSX) || defined(OS_CHROMEOS) - // On Mac or ChromeOS, we don't want to suffix the page title with +#if defined(OS_MACOSX) || defined(USE_ASH) + // On Mac or Ash, we don't want to suffix the page title with // the application name. return title; #else @@ -1918,29 +1903,6 @@ void Browser::TogglePresentationMode() { #endif #if defined(OS_CHROMEOS) -void Browser::Search() { - // Exit fullscreen to show omnibox. - if (window_->IsFullscreen()) { - ToggleFullscreenMode(); - // ToggleFullscreenMode is asynchronous, so we don't have omnibox - // visible at this point. Wait for next event cycle which toggles - // the visibility of omnibox before creating new tab. - MessageLoop::current()->PostTask( - FROM_HERE, base::Bind(&Browser::Search, weak_factory_.GetWeakPtr())); - return; - } - - const GURL& url = GetSelectedWebContents()->GetURL(); - if (url.SchemeIs(chrome::kChromeUIScheme) && - url.host() == chrome::kChromeUINewTabHost) { - // If the NTP is showing, focus the omnibox. - window_->SetFocusToLocationBar(true); - } else { - // Otherwise, open the NTP. - NewTab(); - } -} - void Browser::ShowKeyboardOverlay() { window_->ShowKeyboardOverlay(window_->GetNativeHandle()); } @@ -2492,79 +2454,6 @@ void Browser::OpenSearchEngineOptionsDialog() { ShowOptionsTab(chrome::kSearchEnginesSubPage); } -#if defined(OS_CHROMEOS) -void Browser::OpenFileManager() { - file_manager_util::OpenApplication(); -} - -void Browser::LockScreen() { - content::RecordAction(UserMetricsAction("LockScreen")); - // Never lock the screen for kiosk mode. - if (chromeos::KioskModeSettings::Get()->IsKioskModeEnabled()) - return; - chromeos::DBusThreadManager::Get()->GetPowerManagerClient()-> - NotifyScreenLockRequested(); -} - -void Browser::Shutdown() { - content::RecordAction(UserMetricsAction("Shutdown")); - chromeos::DBusThreadManager::Get()->GetPowerManagerClient()-> - RequestShutdown(); -} - -void Browser::ShowDateOptions() { - content::RecordAction(UserMetricsAction("ShowDateOptions")); - std::string sub_page = std::string(chrome::kSearchSubPage) + "#" + - l10n_util::GetStringUTF8(IDS_OPTIONS_SETTINGS_SECTION_TITLE_DATETIME); - ShowOptionsTab(sub_page); -} - -void Browser::OpenInternetOptionsDialog() { - content::RecordAction(UserMetricsAction("OpenInternetOptionsDialog")); - ShowOptionsTab(chrome::kInternetOptionsSubPage); -} - -void Browser::OpenLanguageOptionsDialog() { - content::RecordAction(UserMetricsAction("OpenLanguageOptionsDialog")); - ShowOptionsTab(chrome::kLanguageOptionsSubPage); -} - -void Browser::OpenSystemTabAndActivate() { - OpenURL(OpenURLParams( - GURL(chrome::kChromeUISystemInfoURL), Referrer(), NEW_FOREGROUND_TAB, - content::PAGE_TRANSITION_LINK, false)); - window_->Activate(); -} - -void Browser::OpenMobilePlanTabAndActivate() { - if (CommandLine::ForCurrentProcess()->HasSwitch( - switches::kEnableMobileSetupDialog)) { - window_->ShowMobileSetup(); - } else { - OpenURL(OpenURLParams( - GURL(chrome::kChromeUIMobileSetupURL), Referrer(), NEW_FOREGROUND_TAB, - content::PAGE_TRANSITION_LINK, false)); - window_->Activate(); - } -} - -void Browser::OpenAddBluetoothDeviceDialog() { - content::RecordAction(UserMetricsAction("OpenAddBluetoothDeviceDialog")); - ShowOptionsTab(chrome::kBluetoothAddDeviceSubPage); -} -#endif // defined(OS_CHROMEOS) - -#if defined(OS_CHROMEOS) && defined(USE_AURA) -void Browser::OpenCrosh() { - GURL crosh_url = TerminalExtensionHelper::GetCroshExtensionURL(profile_); - if (!crosh_url.is_valid()) - return; - OpenURL(OpenURLParams(crosh_url, Referrer(), NEW_FOREGROUND_TAB, - content::PAGE_TRANSITION_GENERATED, - false)); -} -#endif - void Browser::OpenPluginsTabAndActivate() { OpenURL(OpenURLParams( GURL(chrome::kChromeUIPluginsURL), Referrer(), NEW_FOREGROUND_TAB, @@ -3074,7 +2963,6 @@ void Browser::ExecuteCommandWithDisposition( #endif case IDC_EXIT: Exit(); break; #if defined(OS_CHROMEOS) - case IDC_SEARCH: Search(); break; case IDC_SHOW_KEYBOARD_OVERLAY: ShowKeyboardOverlay(); break; #endif @@ -3184,16 +3072,6 @@ void Browser::ExecuteCommandWithDisposition( case IDC_UPGRADE_DIALOG: OpenUpdateChromeDialog(); break; case IDC_VIEW_INCOMPATIBILITIES: ShowAboutConflictsTab(); break; case IDC_HELP_PAGE: ShowHelpTab(); break; -#if defined(OS_CHROMEOS) - case IDC_LOCK_SCREEN: LockScreen(); break; - case IDC_SHUTDOWN: Shutdown(); break; - case IDC_FILE_MANAGER: OpenFileManager(); break; - case IDC_INTERNET_OPTIONS: OpenInternetOptionsDialog(); break; - case IDC_LANGUAGE_OPTIONS: OpenLanguageOptionsDialog(); break; -#endif -#if defined(OS_CHROMEOS) && defined(USE_AURA) - case IDC_NEW_CROSH_TAB: OpenCrosh(); break; -#endif case IDC_SHOW_SYNC_SETUP: ShowSyncSetup(SyncPromoUI::SOURCE_MENU); break; case IDC_TOGGLE_SPEECH_INPUT: ToggleSpeechInput(); break; @@ -4618,9 +4496,6 @@ void Browser::InitCommandState() { // Window management commands command_updater_.UpdateCommandEnabled(IDC_CLOSE_WINDOW, true); command_updater_.UpdateCommandEnabled(IDC_NEW_TAB, true); -#if defined(OS_CHROMEOS) && defined(USE_AURA) - command_updater_.UpdateCommandEnabled(IDC_NEW_CROSH_TAB, true); -#endif command_updater_.UpdateCommandEnabled(IDC_CLOSE_TAB, true); command_updater_.UpdateCommandEnabled(IDC_DUPLICATE_TAB, true); command_updater_.UpdateCommandEnabled(IDC_RESTORE_TAB, false); @@ -4685,15 +4560,7 @@ void Browser::InitCommandState() { command_updater_.UpdateCommandEnabled(IDC_BOOKMARKS_MENU, true); #if defined(OS_CHROMEOS) - // Don't allow screen lock for guest sessions. - command_updater_.UpdateCommandEnabled( - IDC_LOCK_SCREEN, - !CommandLine::ForCurrentProcess()->HasSwitch(switches::kGuestSession)); - command_updater_.UpdateCommandEnabled(IDC_SHUTDOWN, true); - command_updater_.UpdateCommandEnabled(IDC_FILE_MANAGER, true); - command_updater_.UpdateCommandEnabled(IDC_SEARCH, true); command_updater_.UpdateCommandEnabled(IDC_SHOW_KEYBOARD_OVERLAY, true); - command_updater_.UpdateCommandEnabled(IDC_INTERNET_OPTIONS, true); #endif command_updater_.UpdateCommandEnabled( IDC_SHOW_SYNC_SETUP, profile_->GetOriginalProfile()->IsSyncAccessible()); diff --git a/chrome/browser/ui/browser.h b/chrome/browser/ui/browser.h index 376be7f..8477198 100644 --- a/chrome/browser/ui/browser.h +++ b/chrome/browser/ui/browser.h @@ -579,7 +579,6 @@ class Browser : public TabHandlerDelegate, #endif void Exit(); #if defined(OS_CHROMEOS) - void Search(); void ShowKeyboardOverlay(); #endif @@ -670,20 +669,6 @@ class Browser : public TabHandlerDelegate, void OpenAutofillHelpTabAndActivate(); void OpenPrivacyDashboardTabAndActivate(); void OpenSearchEngineOptionsDialog(); -#if defined(OS_CHROMEOS) - void OpenFileManager(); - void LockScreen(); - void Shutdown(); - void ShowDateOptions(); - void OpenInternetOptionsDialog(); - void OpenLanguageOptionsDialog(); - void OpenSystemTabAndActivate(); - void OpenMobilePlanTabAndActivate(); - void OpenAddBluetoothDeviceDialog(); -#endif -#if defined(OS_CHROMEOS) && defined(USE_AURA) - void OpenCrosh(); -#endif void OpenPluginsTabAndActivate(); void ShowSyncSetup(SyncPromoUI::Source source); void ToggleSpeechInput(); diff --git a/chrome/browser/ui/browser_window.h b/chrome/browser/ui/browser_window.h index 6551c43..52e0794 100644 --- a/chrome/browser/ui/browser_window.h +++ b/chrome/browser/ui/browser_window.h @@ -329,9 +329,6 @@ class BrowserWindow : public BaseWindow { virtual FindBar* CreateFindBar() = 0; #if defined(OS_CHROMEOS) - // Shows the mobile setup dialog. - virtual void ShowMobileSetup() = 0; - // Shows the keyboard overlay dialog box. virtual void ShowKeyboardOverlay(gfx::NativeWindow owning_window) = 0; #endif diff --git a/chrome/browser/ui/toolbar/wrench_menu_model.cc b/chrome/browser/ui/toolbar/wrench_menu_model.cc index fd5b0e8..6e56ed7 100644 --- a/chrome/browser/ui/toolbar/wrench_menu_model.cc +++ b/chrome/browser/ui/toolbar/wrench_menu_model.cc @@ -169,9 +169,6 @@ void ToolsMenuModel::Build(Browser* browser) { #endif AddItemWithStringId(IDC_MANAGE_EXTENSIONS, IDS_SHOW_EXTENSIONS); -#if defined(OS_CHROMEOS) - AddItemWithStringId(IDC_FILE_MANAGER, IDS_FILE_MANAGER); -#endif AddItemWithStringId(IDC_TASK_MANAGER, IDS_TASK_MANAGER); AddItemWithStringId(IDC_CLEAR_BROWSING_DATA, IDS_CLEAR_BROWSING_DATA); diff --git a/chrome/browser/ui/views/accelerator_table.cc b/chrome/browser/ui/views/accelerator_table.cc index 487133d..4613a92c 100644 --- a/chrome/browser/ui/views/accelerator_table.cc +++ b/chrome/browser/ui/views/accelerator_table.cc @@ -85,9 +85,6 @@ const AcceleratorMapping kAcceleratorMap[] = { { ui::VKEY_OEM_2, false, true, false, IDC_HELP_PAGE }, { ui::VKEY_OEM_2, true, true, false, IDC_HELP_PAGE }, #endif -#if defined(OS_CHROMEOS) && !defined(USE_AURA) - { ui::VKEY_L, true, true, false, IDC_LOCK_SCREEN }, -#endif { ui::VKEY_I, true, true, false, IDC_DEV_TOOLS }, #if defined(OS_CHROMEOS) { ui::VKEY_I, true, false, true, IDC_FEEDBACK }, @@ -115,13 +112,6 @@ const AcceleratorMapping kAcceleratorMap[] = { { ui::VKEY_HOME, false, false, true, IDC_HOME }, { ui::VKEY_T, true, true, false, IDC_RESTORE_TAB }, { ui::VKEY_S, false, true, false, IDC_SAVE_PAGE }, -#if defined(OS_CHROMEOS) && defined(USE_AURA) - { ui::VKEY_T, false, true, true, IDC_NEW_CROSH_TAB }, -#endif -#if defined(OS_CHROMEOS) - { ui::VKEY_M, false, true, false, IDC_FILE_MANAGER }, - { ui::VKEY_LWIN, false, false, false, IDC_SEARCH }, -#endif { ui::VKEY_9, false, true, false, IDC_SELECT_LAST_TAB }, { ui::VKEY_NUMPAD9, false, true, false, IDC_SELECT_LAST_TAB }, { ui::VKEY_TAB, false, true, false, IDC_SELECT_NEXT_TAB }, diff --git a/chrome/browser/ui/views/ash/chrome_shell_delegate.cc b/chrome/browser/ui/views/ash/chrome_shell_delegate.cc index c81504b..65ce620 100644 --- a/chrome/browser/ui/views/ash/chrome_shell_delegate.cc +++ b/chrome/browser/ui/views/ash/chrome_shell_delegate.cc @@ -10,6 +10,7 @@ #include "ash/wm/window_util.h" #include "base/command_line.h" #include "chrome/browser/chromeos/login/screen_locker.h" +#include "chrome/browser/extensions/api/terminal/terminal_extension_helper.h" #include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_list.h" @@ -19,7 +20,11 @@ #include "chrome/browser/ui/views/frame/browser_view.h" #include "chrome/common/chrome_notification_types.h" #include "chrome/common/chrome_switches.h" +#include "chrome/common/url_constants.h" #include "content/public/browser/notification_service.h" +#include "content/public/browser/user_metrics.h" +#include "content/public/browser/web_contents.h" +#include "grit/generated_resources.h" #include "ui/aura/window.h" #if defined(OS_CHROMEOS) @@ -29,6 +34,7 @@ #include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_settings.h" #include "chrome/browser/chromeos/login/user_manager.h" #include "chrome/browser/chromeos/system/ash_system_tray_delegate.h" +#include "chrome/browser/ui/webui/chromeos/mobile_setup_dialog.h" #include "chromeos/dbus/dbus_thread_manager.h" #include "chromeos/dbus/power_manager_client.h" #endif @@ -37,7 +43,8 @@ ChromeShellDelegate* ChromeShellDelegate::instance_ = NULL; ChromeShellDelegate::ChromeShellDelegate() - : window_positioner_(new WindowPositioner()) { + : window_positioner_(new WindowPositioner()), + ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) { instance_ = this; #if defined(OS_CHROMEOS) registrar_.Add( @@ -90,9 +97,11 @@ bool ChromeShellDelegate::IsScreenLocked() const { #endif } -void ChromeShellDelegate::OpenFileManager() { +void ChromeShellDelegate::Shutdown() { #if defined(OS_CHROMEOS) - file_manager_util::OpenApplication(); + content::RecordAction(content::UserMetricsAction("Shutdown")); + chromeos::DBusThreadManager::Get()->GetPowerManagerClient()-> + RequestShutdown(); #endif } @@ -102,12 +111,82 @@ void ChromeShellDelegate::Exit() { void ChromeShellDelegate::NewWindow(bool is_incognito) { Profile* profile = ProfileManager::GetDefaultProfileOrOffTheRecord(); - Browser::NewEmptyWindow(is_incognito ? profile->GetOffTheRecordProfile() : - profile); + Browser::NewEmptyWindow( + is_incognito ? profile->GetOffTheRecordProfile() : profile); +} + +void ChromeShellDelegate::Search() { + // Exit fullscreen to show omnibox. + Browser* last_active = BrowserList::GetLastActive(); + if (last_active) { + if (last_active->window()->IsFullscreen()) { + last_active->ToggleFullscreenMode(); + // ToggleFullscreenMode is asynchronous, so we don't have omnibox + // visible at this point. Wait for next event cycle which toggles + // the visibility of omnibox before creating new tab. + MessageLoop::current()->PostTask( + FROM_HERE, base::Bind(&ChromeShellDelegate::Search, + weak_factory_.GetWeakPtr())); + return; + } + } + + Browser* target_browser = Browser::GetOrCreateTabbedBrowser( + ProfileManager::GetDefaultProfileOrOffTheRecord()); + const GURL& url = target_browser->GetSelectedWebContents()->GetURL(); + if (url.SchemeIs(chrome::kChromeUIScheme) && + url.host() == chrome::kChromeUINewTabHost) { + // If the NTP is showing, focus the omnibox. + target_browser->window()->SetFocusToLocationBar(true); + } else { + target_browser->NewTab(); + } +} + +void ChromeShellDelegate::OpenFileManager() { +#if defined(OS_CHROMEOS) + file_manager_util::OpenApplication(); +#endif +} + +void ChromeShellDelegate::OpenCrosh() { +#if defined(OS_CHROMEOS) + Browser* browser = Browser::GetOrCreateTabbedBrowser( + ProfileManager::GetDefaultProfileOrOffTheRecord()); + GURL crosh_url = TerminalExtensionHelper::GetCroshExtensionURL( + browser->profile()); + if (!crosh_url.is_valid()) + return; + browser->OpenURL( + content::OpenURLParams(crosh_url, + content::Referrer(), + NEW_FOREGROUND_TAB, + content::PAGE_TRANSITION_GENERATED, + false)); +#endif +} + +void ChromeShellDelegate::OpenMobileSetup() { +#if defined(OS_CHROMEOS) + Browser* browser = Browser::GetOrCreateTabbedBrowser( + ProfileManager::GetDefaultProfileOrOffTheRecord()); + if (CommandLine::ForCurrentProcess()->HasSwitch( + switches::kEnableMobileSetupDialog)) { + MobileSetupDialog::Show(); + } else { + browser->OpenURL( + content::OpenURLParams(GURL(chrome::kChromeUIMobileSetupURL), + content::Referrer(), + NEW_FOREGROUND_TAB, + content::PAGE_TRANSITION_LINK, + false)); + browser->window()->Activate(); + } +#endif } ash::AppListViewDelegate* -ChromeShellDelegate::CreateAppListViewDelegate() { + ChromeShellDelegate::CreateAppListViewDelegate() { // Shell will own the created delegate. return new AppListViewDelegate; } diff --git a/chrome/browser/ui/views/ash/chrome_shell_delegate.h b/chrome/browser/ui/views/ash/chrome_shell_delegate.h index 929750e..7a71f49 100644 --- a/chrome/browser/ui/views/ash/chrome_shell_delegate.h +++ b/chrome/browser/ui/views/ash/chrome_shell_delegate.h @@ -35,9 +35,13 @@ class ChromeShellDelegate : public ash::ShellDelegate, virtual void LockScreen() OVERRIDE; virtual void UnlockScreen() OVERRIDE; virtual bool IsScreenLocked() const OVERRIDE; - virtual void OpenFileManager() OVERRIDE; + virtual void Shutdown() OVERRIDE; virtual void Exit() OVERRIDE; virtual void NewWindow(bool is_incognito) OVERRIDE; + virtual void Search() OVERRIDE; + virtual void OpenFileManager() OVERRIDE; + virtual void OpenCrosh() OVERRIDE; + virtual void OpenMobileSetup() OVERRIDE; virtual ash::AppListViewDelegate* CreateAppListViewDelegate() OVERRIDE; virtual void StartPartialScreenshot( ash::ScreenshotDelegate* screenshot_delegate) OVERRIDE; @@ -59,6 +63,8 @@ class ChromeShellDelegate : public ash::ShellDelegate, scoped_ptr<WindowPositioner> window_positioner_; + base::WeakPtrFactory<ChromeShellDelegate> weak_factory_; + DISALLOW_COPY_AND_ASSIGN(ChromeShellDelegate); }; diff --git a/chrome/browser/ui/views/frame/browser_view.cc b/chrome/browser/ui/views/frame/browser_view.cc index 4b7cf0c..64f765e 100644 --- a/chrome/browser/ui/views/frame/browser_view.cc +++ b/chrome/browser/ui/views/frame/browser_view.cc @@ -124,7 +124,6 @@ #if defined(OS_CHROMEOS) #include "chrome/browser/ui/views/keyboard_overlay_dialog_view.h" -#include "chrome/browser/ui/webui/chromeos/mobile_setup_dialog.h" #endif #if defined(ENABLE_ONE_CLICK_SIGNIN) @@ -1339,10 +1338,6 @@ FindBar* BrowserView::CreateFindBar() { } #if defined(OS_CHROMEOS) -void BrowserView::ShowMobileSetup() { - MobileSetupDialog::Show(); -} - void BrowserView::ShowKeyboardOverlay(gfx::NativeWindow owning_window) { KeyboardOverlayDialogView::ShowDialog(owning_window, this); } @@ -2454,7 +2449,6 @@ void BrowserView::CreateLauncherIcon() { #endif // defined(USE_AURA) } -#if !defined(OS_CHROMEOS) || defined(USE_AURA) // static BrowserWindow* BrowserWindow::CreateBrowserWindow(Browser* browser) { // Create the view and the frame. The frame will attach itself via the view @@ -2465,7 +2459,6 @@ BrowserWindow* BrowserWindow::CreateBrowserWindow(Browser* browser) { l10n_util::GetStringUTF16(IDS_PRODUCT_NAME)); return view; } -#endif void BrowserView::ShowAvatarBubble(WebContents* web_contents, const gfx::Rect& rect) { diff --git a/chrome/browser/ui/views/frame/browser_view.h b/chrome/browser/ui/views/frame/browser_view.h index a1c3622..743d81e 100644 --- a/chrome/browser/ui/views/frame/browser_view.h +++ b/chrome/browser/ui/views/frame/browser_view.h @@ -321,7 +321,6 @@ class BrowserView : public BrowserWindow, const gfx::Rect& bounds) OVERRIDE; virtual FindBar* CreateFindBar() OVERRIDE; #if defined(OS_CHROMEOS) - virtual void ShowMobileSetup() OVERRIDE; virtual void ShowKeyboardOverlay(gfx::NativeWindow owning_window) OVERRIDE; #endif virtual void ShowAvatarBubble(content::WebContents* web_contents, diff --git a/chrome/browser/ui/webui/feedback_ui.cc b/chrome/browser/ui/webui/feedback_ui.cc index 0e74ebb..250f06a 100644 --- a/chrome/browser/ui/webui/feedback_ui.cc +++ b/chrome/browser/ui/webui/feedback_ui.cc @@ -538,7 +538,14 @@ void FeedbackHandler::HandleCancel(const ListValue*) { void FeedbackHandler::HandleOpenSystemTab(const ListValue* args) { #if defined(OS_CHROMEOS) - BrowserList::GetLastActive()->OpenSystemTabAndActivate(); + Browser* last_active = BrowserList::GetLastActive(); + last_active->OpenURL( + content::OpenURLParams(GURL(chrome::kChromeUISystemInfoURL), + content::Referrer(), + NEW_FOREGROUND_TAB, + content::PAGE_TRANSITION_LINK, + false)); + last_active->window()->Activate(); #endif } diff --git a/chrome/browser/ui/webui/options2/chromeos/internet_options_handler2.cc b/chrome/browser/ui/webui/options2/chromeos/internet_options_handler2.cc index db1153e..181c8c8 100644 --- a/chrome/browser/ui/webui/options2/chromeos/internet_options_handler2.cc +++ b/chrome/browser/ui/webui/options2/chromeos/internet_options_handler2.cc @@ -10,6 +10,8 @@ #include <string> #include <vector> +#include "ash/shell.h" +#include "ash/shell_delegate.h" #include "base/base64.h" #include "base/basictypes.h" #include "base/bind.h" @@ -526,10 +528,7 @@ void InternetOptionsHandler::ShowMorePlanInfoCallback(const ListValue* args) { void InternetOptionsHandler::BuyDataPlanCallback(const ListValue* args) { if (!web_ui()) return; - Browser* browser = BrowserList::FindBrowserWithFeature( - Profile::FromWebUI(web_ui()), Browser::FEATURE_TABSTRIP); - if (browser) - browser->OpenMobilePlanTabAndActivate(); + ash::Shell::GetInstance()->delegate()->OpenMobileSetup(); } void InternetOptionsHandler::SetApnCallback(const ListValue* args) { @@ -1102,9 +1101,7 @@ void InternetOptionsHandler::HandleCellularButtonClick( } else if (command == "disconnect") { cros_->DisconnectFromNetwork(cellular); } else if (command == "activate") { - Browser* browser = BrowserList::GetLastActive(); - if (browser) - browser->OpenMobilePlanTabAndActivate(); + ash::Shell::GetInstance()->delegate()->OpenMobileSetup(); } else if (command == "options") { PopulateDictionaryDetails(cellular); } |