| Index: chrome/browser/profile_manager.cc
|
| diff --git a/chrome/browser/profile_manager.cc b/chrome/browser/profile_manager.cc
|
| index 4e590660ec035e892e795cf2d2449ae1cee1e241..a82a847569c4304dd13fe0bc9c7adc7b5887bf1a 100644
|
| --- a/chrome/browser/profile_manager.cc
|
| +++ b/chrome/browser/profile_manager.cc
|
| @@ -31,6 +31,11 @@
|
| #include "net/url_request/url_request_job.h"
|
| #include "net/url_request/url_request_job_tracker.h"
|
|
|
| +#if defined(OS_CHROMEOS)
|
| +#include "chrome/browser/chromeos/cros/cros_library.h"
|
| +#include "chrome/browser/chromeos/cros/cryptohome_library.h"
|
| +#endif
|
| +
|
| // static
|
| void ProfileManager::ShutdownSessionServices() {
|
| ProfileManager* pm = g_browser_process->profile_manager();
|
| @@ -39,12 +44,11 @@ void ProfileManager::ShutdownSessionServices() {
|
| }
|
|
|
| // static
|
| -Profile* ProfileManager::GetLoginWizardProfile() {
|
| +Profile* ProfileManager::GetDefaultProfile() {
|
| FilePath user_data_dir;
|
| PathService::Get(chrome::DIR_USER_DATA, &user_data_dir);
|
| ProfileManager* profile_manager = g_browser_process->profile_manager();
|
| - return profile_manager->GetDefaultProfile(
|
| - user_data_dir)->GetOffTheRecordProfile();
|
| + return profile_manager->GetDefaultProfile(user_data_dir);
|
| }
|
|
|
| ProfileManager::ProfileManager() : logged_in_(false) {
|
| @@ -91,22 +95,45 @@ FilePath ProfileManager::GetProfilePrefsPath(
|
|
|
| Profile* ProfileManager::GetDefaultProfile(const FilePath& user_data_dir) {
|
| FilePath default_profile_dir(user_data_dir);
|
| - std::wstring profile = chrome::kNotSignedInProfile;
|
| #if defined(OS_CHROMEOS)
|
| - // If the user has logged in, pick up the new profile.
|
| const CommandLine& command_line = *CommandLine::ForCurrentProcess();
|
| - // TODO(davemoore) Delete this once chromium os has started using
|
| - // "--login-profile" instead of "--profile".
|
| - if (logged_in_ && command_line.HasSwitch(switches::kProfile)) {
|
| - profile = command_line.GetSwitchValue(switches::kProfile);
|
| - }
|
| - if (logged_in_ && command_line.HasSwitch(switches::kLoginProfile)) {
|
| - profile = command_line.GetSwitchValue(switches::kLoginProfile);
|
| + if (logged_in_) {
|
| + std::wstring profile_dir;
|
| + // If the user has logged in, pick up the new profile.
|
| + // TODO(davemoore) Delete this once chromium os has started using
|
| + // "--login-profile" instead of "--profile".
|
| + if (command_line.HasSwitch(switches::kLoginProfile)) {
|
| + profile_dir = command_line.GetSwitchValue(switches::kLoginProfile);
|
| + } else if (command_line.HasSwitch(switches::kProfile)) {
|
| + profile_dir = command_line.GetSwitchValue(switches::kProfile);
|
| + } else {
|
| + // We should never be logged in with no profile dir.
|
| + NOTREACHED();
|
| + return NULL;
|
| + }
|
| + default_profile_dir = default_profile_dir.Append(
|
| + FilePath::FromWStringHack(profile_dir));
|
| + return GetProfile(default_profile_dir);
|
| + } else {
|
| + // If not logged in on cros, always return the incognito profile
|
| + default_profile_dir = default_profile_dir.Append(
|
| + FilePath::FromWStringHack(chrome::kNotSignedInProfile));
|
| + Profile*profile = GetProfile(default_profile_dir);
|
| +
|
| + // For cros, return the OTR profile so we never accidentally keep
|
| + // user data in an unencrypted profile. But doing this makes
|
| + // many of the browser and ui tests fail.
|
| + // TODO(davemoore) Fix the tests.
|
| + if (!command_line.HasSwitch(switches::kTestType))
|
| + profile = profile->GetOffTheRecordProfile();
|
| +
|
| + return profile;
|
| }
|
| -#endif
|
| +#else
|
| default_profile_dir = default_profile_dir.Append(
|
| - FilePath::FromWStringHack(profile));
|
| + FilePath::FromWStringHack(chrome::kNotSignedInProfile));
|
| return GetProfile(default_profile_dir);
|
| +#endif
|
| }
|
|
|
| Profile* ProfileManager::GetProfile(const FilePath& profile_dir) {
|
| @@ -200,6 +227,12 @@ void ProfileManager::Observe(
|
| const NotificationDetails& details) {
|
| #if defined(OS_CHROMEOS)
|
| if (type == NotificationType::LOGIN_USER_CHANGED) {
|
| + CHECK(chromeos::CrosLibrary::EnsureLoaded());
|
| + // If we don't have a mounted profile directory we're in trouble.
|
| + // TODO(davemoore) Once we have better api this check should ensure that
|
| + // our profile directory is the one that's mounted, and that it's mounted
|
| + // as the current user.
|
| + CHECK(chromeos::CryptohomeLibrary::Get()->IsMounted());
|
| logged_in_ = true;
|
| }
|
| #endif
|
|
|