Chromium Code Reviews| Index: chrome/browser/chrome_browser_main.cc |
| diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_browser_main.cc |
| index 372835ac723201c3e81d8f1a66323a613054e845..9c13fbd56b0de9b6ebb11778ea056adccb032ab1 100644 |
| --- a/chrome/browser/chrome_browser_main.cc |
| +++ b/chrome/browser/chrome_browser_main.cc |
| @@ -88,6 +88,8 @@ |
| #include "chrome/browser/ui/app_modal/chrome_javascript_native_dialog_factory.h" |
| #include "chrome/browser/ui/browser.h" |
| #include "chrome/browser/ui/browser_finder.h" |
| +#include "chrome/browser/ui/profile_error_dialog.h" |
| +#include "chrome/browser/ui/simple_message_box.h" |
| #include "chrome/browser/ui/startup/bad_flags_prompt.h" |
| #include "chrome/browser/ui/startup/default_browser_prompt.h" |
| #include "chrome/browser/ui/startup/startup_browser_creator.h" |
| @@ -391,7 +393,7 @@ Profile* CreatePrimaryProfile(const content::MainFunctionParams& parameters, |
| profile_list->Clear(); |
| } |
| - Profile* profile = NULL; |
| + Profile* profile = nullptr; |
| #if defined(OS_CHROMEOS) || defined(OS_ANDROID) |
| // On ChromeOS and Android the ProfileManager will use the same path as the |
| // one we got passed. GetActiveUserProfile will therefore use the correct path |
| @@ -399,44 +401,35 @@ Profile* CreatePrimaryProfile(const content::MainFunctionParams& parameters, |
| DCHECK_EQ(user_data_dir.value(), |
| g_browser_process->profile_manager()->user_data_dir().value()); |
| profile = ProfileManager::GetActiveUserProfile(); |
| + |
| + // TODO(port): fix this. See comments near the definition of |user_data_dir|. |
| + // It is better to CHECK-fail here than it is to silently exit because of |
| + // missing code in the above test. |
| + CHECK(profile) << "Cannot get default profile."; |
| + |
| #else |
| - base::FilePath profile_path = |
| - GetStartupProfilePath(user_data_dir, parsed_command_line); |
| - |
| - profile = g_browser_process->profile_manager()->GetProfile( |
| - profile_path); |
| - |
| - // If we're using the --new-profile-management flag and this profile is |
| - // signed out, then we should show the user manager instead. By switching |
| - // the active profile to the guest profile we ensure that no |
| - // browser windows will be opened for the guest profile. |
| - if (switches::IsNewProfileManagement() && |
| - profile && |
| - !profile->IsGuestSession()) { |
| - ProfileAttributesEntry* entry; |
| - bool has_entry = g_browser_process->profile_manager()-> |
| - GetProfileAttributesStorage(). |
| - GetProfileAttributesWithPath(profile_path, &entry); |
| - if (has_entry && entry->IsSigninRequired()) { |
| - profile = g_browser_process->profile_manager()->GetProfile( |
| - ProfileManager::GetGuestProfilePath()); |
| - } |
| + profile = GetStartupProfile(user_data_dir, parsed_command_line); |
| + |
| + bool profile_dir_specified = |
| + profiles::IsMultipleProfilesEnabled() && |
|
brettw
2016/07/01 23:13:22
This same condition is used near the top of this f
WC Leung
2016/07/07 17:01:53
Done.
|
| + parsed_command_line.HasSwitch(switches::kProfileDirectory); |
| + |
| + if (!profile && !profile_dir_specified) |
| + profile = GetFallbackStartupProfile(); |
| + |
| + if (!profile) { |
| + ProfileErrorType error_type = profile_dir_specified ? |
| + PROFILE_ERROR_CREATE_FAILURE_SPECIFIED : |
| + PROFILE_ERROR_CREATE_FAILURE_ALL; |
| + |
| + ShowProfileErrorDialog(error_type, IDS_COULDNT_STARTUP_PROFILE_ERROR); |
| + return nullptr; |
| } |
| #endif // defined(OS_CHROMEOS) || defined(OS_ANDROID) |
| - if (profile) { |
| - UMA_HISTOGRAM_LONG_TIMES( |
| - "Startup.CreateFirstProfile", base::Time::Now() - start); |
| - return profile; |
| - } |
| - |
| -#if !defined(OS_WIN) |
| - // TODO(port): fix this. See comments near the definition of |
| - // user_data_dir. It is better to CHECK-fail here than it is to |
| - // silently exit because of missing code in the above test. |
| - CHECK(profile) << "Cannot get default profile."; |
| -#endif // !defined(OS_WIN) |
| - return NULL; |
| + UMA_HISTOGRAM_LONG_TIMES( |
| + "Startup.CreateFirstProfile", base::Time::Now() - start); |
| + return profile; |
| } |
| #if defined(OS_MACOSX) |