diff options
6 files changed, 39 insertions, 3 deletions
diff --git a/ash/launcher/launcher_view.cc b/ash/launcher/launcher_view.cc index d19d334..fb9f928 100644 --- a/ash/launcher/launcher_view.cc +++ b/ash/launcher/launcher_view.cc @@ -893,8 +893,7 @@ void LauncherView::ShowContextMenuForView(views::View* source, int view_index = view_model_->GetIndexOfView(source); if (view_index != -1 && - (model_->items()[view_index].type == TYPE_BROWSER_SHORTCUT || - model_->items()[view_index].type == TYPE_APP_LIST)) { + model_->items()[view_index].type == TYPE_APP_LIST) { view_index = -1; } #if !defined(OS_MACOSX) diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd index d9d39877..7c6560c 100644 --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd @@ -15820,6 +15820,12 @@ Battery full <message name="IDS_LAUNCHER_CONTEXT_MENU_UNPIN" desc="Title text for the 'unpin' context menu item of the launcher"> Unpin </message> + <message name="IDS_LAUNCHER_NEW_WINDOW" desc="The text label of the New Window menu item"> + New window + </message> + <message name="IDS_LAUNCHER_NEW_INCOGNITO_WINDOW" desc="The text label of the New incognito window menu item"> + New incognito window + </message> <message name="IDS_GTALK_SCREEN_SHARE_DIALOG_MESSAGE" desc="Message to display in the dialog box asking user's permission to share their screen"> Do you want to start presenting your entire screen in this meeting? </message> diff --git a/chrome/browser/ui/views/ash/launcher/chrome_launcher_delegate.cc b/chrome/browser/ui/views/ash/launcher/chrome_launcher_delegate.cc index 5278531..ffc272c 100644 --- a/chrome/browser/ui/views/ash/launcher/chrome_launcher_delegate.cc +++ b/chrome/browser/ui/views/ash/launcher/chrome_launcher_delegate.cc @@ -396,6 +396,14 @@ void ChromeLauncherDelegate::UnpinAppsWithID(const std::string& app_id) { } } +bool ChromeLauncherDelegate::IsLoggedInAsGuest() { + return ProfileManager::GetDefaultProfileOrOffTheRecord()->IsOffTheRecord(); +} + +void ChromeLauncherDelegate::CreateNewIncognitoWindow() { + Browser::NewEmptyWindow(GetProfileForNewWindows()->GetOffTheRecordProfile()); +} + void ChromeLauncherDelegate::SetAutoHideBehavior( ash::ShelfAutoHideBehavior behavior) { ash::Shell::GetInstance()->SetShelfAutoHideBehavior(behavior); diff --git a/chrome/browser/ui/views/ash/launcher/chrome_launcher_delegate.h b/chrome/browser/ui/views/ash/launcher/chrome_launcher_delegate.h index d46502f..8a58cf3 100644 --- a/chrome/browser/ui/views/ash/launcher/chrome_launcher_delegate.h +++ b/chrome/browser/ui/views/ash/launcher/chrome_launcher_delegate.h @@ -140,6 +140,13 @@ class ChromeLauncherDelegate : public ash::LauncherDelegate, // Unpins any app items whose id is |app_id|. void UnpinAppsWithID(const std::string& app_id); + // Returns true if the user is currently logged in as a guest. + bool IsLoggedInAsGuest(); + + // Invoked when the user clicks on button in the launcher to create a new + // incognito window. + void CreateNewIncognitoWindow(); + ash::LauncherModel* model() { return model_; } Profile* profile() { return profile_; } diff --git a/chrome/browser/ui/views/ash/launcher/launcher_context_menu.cc b/chrome/browser/ui/views/ash/launcher/launcher_context_menu.cc index 9bfd6435..30fe5c4 100644 --- a/chrome/browser/ui/views/ash/launcher/launcher_context_menu.cc +++ b/chrome/browser/ui/views/ash/launcher/launcher_context_menu.cc @@ -37,6 +37,13 @@ LauncherContextMenu::LauncherContextMenu(ChromeLauncherDelegate* delegate, AddCheckItemWithStringId( LAUNCH_TYPE_FULLSCREEN, IDS_APP_CONTEXT_MENU_OPEN_FULLSCREEN); + } else if (item_.type == ash::TYPE_BROWSER_SHORTCUT) { + AddItem(MENU_NEW_WINDOW, + l10n_util::GetStringUTF16(IDS_LAUNCHER_NEW_WINDOW)); + if (!delegate_->IsLoggedInAsGuest()) { + AddItem(MENU_NEW_INCOGNITO_WINDOW, + l10n_util::GetStringUTF16(IDS_LAUNCHER_NEW_INCOGNITO_WINDOW)); + } } else { AddItem(MENU_OPEN, delegate->GetTitle(item_)); if (delegate->IsOpen(item_.id)) { @@ -108,6 +115,13 @@ void LauncherContextMenu::ExecuteCommand(int command_id) { delegate_->SetLaunchType(item_.id, ExtensionPrefs::LAUNCH_FULLSCREEN); break; case MENU_AUTO_HIDE: - return ash::LauncherContextMenu::ToggleAutoHideMenu(); + ash::LauncherContextMenu::ToggleAutoHideMenu(); + break; + case MENU_NEW_WINDOW: + delegate_->CreateNewWindow(); + break; + case MENU_NEW_INCOGNITO_WINDOW: + delegate_->CreateNewIncognitoWindow(); + break; } } diff --git a/chrome/browser/ui/views/ash/launcher/launcher_context_menu.h b/chrome/browser/ui/views/ash/launcher/launcher_context_menu.h index 2952ad2..db7645a 100644 --- a/chrome/browser/ui/views/ash/launcher/launcher_context_menu.h +++ b/chrome/browser/ui/views/ash/launcher/launcher_context_menu.h @@ -43,6 +43,8 @@ class LauncherContextMenu : public ui::SimpleMenuModel, LAUNCH_TYPE_FULLSCREEN, LAUNCH_TYPE_WINDOW, MENU_AUTO_HIDE, + MENU_NEW_WINDOW, + MENU_NEW_INCOGNITO_WINDOW }; // Does |item_| represent a valid item? See description of constructor for |