Index: chrome/browser/browser.cc |
=================================================================== |
--- chrome/browser/browser.cc (revision 6272) |
+++ chrome/browser/browser.cc (working copy) |
@@ -37,11 +37,14 @@ |
#include "chrome/browser/site_instance.h" |
#include "chrome/browser/task_manager.h" |
#include "chrome/browser/url_fixer_upper.h" |
+#include "chrome/browser/user_data_manager.h" |
#include "chrome/browser/user_metrics.h" |
#include "chrome/browser/view_ids.h" |
#include "chrome/browser/views/download_tab_view.h" |
#include "chrome/browser/views/go_button.h" |
#include "chrome/browser/views/location_bar_view.h" |
+#include "chrome/browser/views/new_profile_dialog.h" |
+#include "chrome/browser/views/select_profile_dialog.h" |
#include "chrome/browser/views/status_bubble.h" |
#include "chrome/browser/views/toolbar_star_toggle.h" |
#include "chrome/browser/web_contents_view.h" |
@@ -654,6 +657,26 @@ |
Browser::OpenEmptyWindow(profile_->GetOriginalProfile()); |
} |
+void Browser::OpenSelectProfileDialog() { |
+ UserMetrics::RecordAction(L"SelectProfile", profile_); |
+ SelectProfileDialog::RunDialog(); |
+} |
+ |
+void Browser::OpenNewProfileDialog() { |
+ UserMetrics::RecordAction(L"CreateProfile", profile_); |
+ NewProfileDialog::RunDialog(); |
+} |
+ |
+void Browser::NewProfileWindowByName(const std::wstring& profile) { |
+ UserMetrics::RecordAction(L"NewProfileWindowByName", profile_); |
+ UserDataManager::Get()->LaunchChromeForProfile(profile); |
+} |
+ |
+void Browser::NewProfileWindowByIndex(int index) { |
+ UserMetrics::RecordAction(L"NewProfileWindowByIndex", profile_); |
+ UserDataManager::Get()->LaunchChromeForProfile(index); |
+} |
+ |
void Browser::NewIncognitoWindow() { |
UserMetrics::RecordAction(L"NewIncognitoWindow", profile_); |
Browser::OpenEmptyWindow(profile_->GetOffTheRecordProfile()); |
@@ -1182,9 +1205,21 @@ |
case IDC_SHOW_DOWNLOADS: ShowDownloadsTab(); break; |
case IDC_SHOW_BOOKMARK_MANAGER: OpenBookmarksManager(); break; |
case IDC_SHOW_BOOKMARKS_BAR: ToggleBookmarksBar(); break; |
+ case IDC_NEWPROFILEWINDOW: |
+ case IDC_SELECT_PROFILE: |
+ OpenSelectProfileDialog(); |
+ break; |
+ case IDC_NEW_PROFILE: OpenNewProfileDialog(); break; |
default: |
- LOG(WARNING) << "Received Unimplemented Command: " << id; |
+ // Handle the user action for creating a new window in a specific profile. |
+ if (id >= IDC_NEWPROFILEWINDOW_MIN_ID && |
+ id <= IDC_NEWPROFILEWINDOW_MAX_ID) { |
+ int index = id - IDC_NEWPROFILEWINDOW_MIN_ID; |
+ NewProfileWindowByIndex(index); |
+ } else { |
+ LOG(WARNING) << "Received Unimplemented Command: " << id; |
+ } |
break; |
} |
} |
@@ -2016,6 +2051,16 @@ |
!current_tab->GetFavIcon().isNull()); |
controller_.UpdateCommandEnabled(IDC_DUPLICATE, |
CanDuplicateContentsAt(selected_index())); |
+ |
+ // Enable various IDC_NEWPROFILEWINDOW* commands. |
+ controller_.UpdateCommandEnabled(IDC_NEWPROFILEWINDOW, true); |
+ controller_.UpdateCommandEnabled(IDC_SELECT_PROFILE, true); |
+ controller_.UpdateCommandEnabled(IDC_NEW_PROFILE, true); |
+ for (int i = IDC_NEWPROFILEWINDOW_MIN_ID; |
+ i <= IDC_NEWPROFILEWINDOW_MAX_ID; |
+ ++i) { |
+ controller_.UpdateCommandEnabled(i, true); |
+ } |
} |
void Browser::SetStarredButtonToggled(bool starred) { |