Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(685)

Side by Side Diff: chrome/browser/chrome_browser_main.cc

Issue 1042923003: Fail gracefully when starting Chrome with an invalid kProfileDirectory. Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix indent Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/chrome_browser_main.h" 5 #include "chrome/browser/chrome_browser_main.h"
6 6
7 #include <set> 7 #include <set>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after
346 #if defined(OS_CHROMEOS) || defined(OS_ANDROID) 346 #if defined(OS_CHROMEOS) || defined(OS_ANDROID)
347 // On ChromeOS and Android the ProfileManager will use the same path as the 347 // On ChromeOS and Android the ProfileManager will use the same path as the
348 // one we got passed. GetActiveUserProfile will therefore use the correct path 348 // one we got passed. GetActiveUserProfile will therefore use the correct path
349 // automatically. 349 // automatically.
350 DCHECK_EQ(user_data_dir.value(), 350 DCHECK_EQ(user_data_dir.value(),
351 g_browser_process->profile_manager()->user_data_dir().value()); 351 g_browser_process->profile_manager()->user_data_dir().value());
352 profile = ProfileManager::GetActiveUserProfile(); 352 profile = ProfileManager::GetActiveUserProfile();
353 #else 353 #else
354 base::FilePath profile_path = 354 base::FilePath profile_path =
355 GetStartupProfilePath(user_data_dir, parsed_command_line); 355 GetStartupProfilePath(user_data_dir, parsed_command_line);
356 ProfileInfoCache& cache =
Mike Lerman 2015/03/31 20:48:30 nit: Can this be a const ProfileInfoCache&?
noms (inactive) 2015/03/31 21:01:33 Done.
357 g_browser_process->profile_manager()->GetProfileInfoCache();
356 358
357 // Without NewAvatarMenu, replace guest with any existing profile. 359 // Without NewAvatarMenu, replace guest with any existing profile.
358 if (!switches::IsNewAvatarMenu() && 360 if (!switches::IsNewAvatarMenu() &&
359 profile_path == ProfileManager::GetGuestProfilePath()) { 361 profile_path == ProfileManager::GetGuestProfilePath()) {
360 profile_path = g_browser_process->profile_manager()->GetProfileInfoCache(). 362 profile_path = cache.GetPathOfProfileAtIndex(0);
361 GetPathOfProfileAtIndex(0);
362 } 363 }
364
365 // If we are trying to load a profile that has been deleted (for example from
366 // an old shortcut, or using an incorrect kProfileDirectory argument), set
367 // the active profile to Guest to force showing the User Manager.
368 size_t profile_index = cache.GetIndexOfProfileWithPath(profile_path);
369 if (profile_index == std::string::npos)
Mike Lerman 2015/03/31 20:48:30 We need to make sure that those folks who have dis
noms (inactive) 2015/03/31 21:01:33 Ughhhhh that's a weird result now, though (but you
370 profile_path = ProfileManager::GetGuestProfilePath();
371
363 profile = g_browser_process->profile_manager()->GetProfile( 372 profile = g_browser_process->profile_manager()->GetProfile(
364 profile_path); 373 profile_path);
365 374
366 // If we're using the --new-profile-management flag and this profile is 375 // If we're using the --new-profile-management flag and this profile is
367 // signed out, then we should show the user manager instead. By switching 376 // signed out, then we should show the user manager instead. By switching
368 // the active profile to the guest profile we ensure that no 377 // the active profile to the guest profile we ensure that no
369 // browser windows will be opened for the guest profile. 378 // browser windows will be opened for the guest profile.
370 if (switches::IsNewProfileManagement() && 379 if (switches::IsNewProfileManagement() &&
371 profile && 380 profile &&
372 !profile->IsGuestSession()) { 381 !profile->IsGuestSession()) {
373 ProfileInfoCache& cache =
374 g_browser_process->profile_manager()->GetProfileInfoCache();
375 size_t profile_index = cache.GetIndexOfProfileWithPath(profile_path);
376
377 if (profile_index != std::string::npos && 382 if (profile_index != std::string::npos &&
Mike Lerman 2015/03/31 20:48:30 We can remove the profile_index != std::string::np
noms (inactive) 2015/03/31 21:01:33 Done.
378 cache.ProfileIsSigninRequiredAtIndex(profile_index)) { 383 cache.ProfileIsSigninRequiredAtIndex(profile_index)) {
379 profile = g_browser_process->profile_manager()->GetProfile( 384 profile = g_browser_process->profile_manager()->GetProfile(
380 ProfileManager::GetGuestProfilePath()); 385 ProfileManager::GetGuestProfilePath());
381 } 386 }
382 } 387 }
383 #endif // defined(OS_CHROMEOS) || defined(OS_ANDROID) 388 #endif // defined(OS_CHROMEOS) || defined(OS_ANDROID)
384 if (profile) { 389 if (profile) {
385 UMA_HISTOGRAM_LONG_TIMES( 390 UMA_HISTOGRAM_LONG_TIMES(
386 "Startup.CreateFirstProfile", base::Time::Now() - start); 391 "Startup.CreateFirstProfile", base::Time::Now() - start);
387 return profile; 392 return profile;
(...skipping 1342 matching lines...) Expand 10 before | Expand all | Expand 10 after
1730 chromeos::CrosSettings::Shutdown(); 1735 chromeos::CrosSettings::Shutdown();
1731 #endif // defined(OS_CHROMEOS) 1736 #endif // defined(OS_CHROMEOS)
1732 #endif // defined(OS_ANDROID) 1737 #endif // defined(OS_ANDROID)
1733 } 1738 }
1734 1739
1735 // Public members: 1740 // Public members:
1736 1741
1737 void ChromeBrowserMainParts::AddParts(ChromeBrowserMainExtraParts* parts) { 1742 void ChromeBrowserMainParts::AddParts(ChromeBrowserMainExtraParts* parts) {
1738 chrome_extra_parts_.push_back(parts); 1743 chrome_extra_parts_.push_back(parts);
1739 } 1744 }
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/profiles/profiles_state.cc » ('j') | chrome/browser/profiles/profiles_state.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698