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

Unified Diff: chrome/browser/chromeos/login/session/user_session_manager.cc

Issue 745613002: [cros] Cleanup: remove LoginUtils (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: get rid of FakeChromeUserManager usage in ExistingUserController* tests Created 5 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/login/session/user_session_manager.cc
diff --git a/chrome/browser/chromeos/login/session/user_session_manager.cc b/chrome/browser/chromeos/login/session/user_session_manager.cc
index e0428306141f37eb720d8d2d2c43cb164b90fa71..598cd9c3cd2673ec6ae5442cf9e27b21714faa69 100644
--- a/chrome/browser/chromeos/login/session/user_session_manager.cc
+++ b/chrome/browser/chromeos/login/session/user_session_manager.cc
@@ -30,9 +30,11 @@
#include "chrome/browser/chromeos/boot_times_recorder.h"
#include "chrome/browser/chromeos/first_run/first_run.h"
#include "chrome/browser/chromeos/input_method/input_method_util.h"
+#include "chrome/browser/chromeos/login/auth/chrome_cryptohome_authenticator.h"
#include "chrome/browser/chromeos/login/chrome_restart_request.h"
#include "chrome/browser/chromeos/login/demo_mode/demo_app_launcher.h"
#include "chrome/browser/chromeos/login/easy_unlock/easy_unlock_key_manager.h"
+#include "chrome/browser/chromeos/login/lock/screen_locker.h"
#include "chrome/browser/chromeos/login/profile_auth_data.h"
#include "chrome/browser/chromeos/login/saml/saml_offline_signin_limiter.h"
#include "chrome/browser/chromeos/login/saml/saml_offline_signin_limiter_factory.h"
@@ -75,6 +77,7 @@
#include "chromeos/dbus/cryptohome_client.h"
#include "chromeos/dbus/dbus_thread_manager.h"
#include "chromeos/dbus/session_manager_client.h"
+#include "chromeos/login/auth/stub_authenticator.h"
#include "chromeos/login/user_names.h"
#include "chromeos/network/portal_detector/network_portal_detector.h"
#include "chromeos/network/portal_detector/network_portal_detector_strategy.h"
@@ -313,14 +316,16 @@ void UserSessionManager::RegisterPrefs(PrefRegistrySimple* registry) {
}
UserSessionManager::UserSessionManager()
- : delegate_(NULL),
+ : delegate_(nullptr),
+ authenticator_(nullptr),
has_auth_cookies_(false),
user_sessions_restored_(false),
user_sessions_restore_in_progress_(false),
exit_after_session_restore_(false),
session_restore_strategy_(
OAuth2LoginManager::RESTORE_FROM_SAVED_OAUTH2_REFRESH_TOKEN),
- running_easy_unlock_key_ops_(false) {
+ running_easy_unlock_key_ops_(false),
+ should_launch_browser_(true) {
net::NetworkChangeNotifier::AddConnectionTypeObserver(this);
user_manager::UserManager::Get()->AddSessionStateObserver(this);
}
@@ -365,14 +370,35 @@ void UserSessionManager::CompleteGuestSessionLogin(const GURL& start_url) {
RestartChrome(cmd_line_str);
}
+scoped_refptr<Authenticator> UserSessionManager::CreateAuthenticator(
+ AuthStatusConsumer* consumer) {
+ // Screen locker needs new Authenticator instance each time.
+ if (ScreenLocker::default_screen_locker()) {
+ if (authenticator_.get())
+ authenticator_->SetConsumer(NULL);
+ authenticator_ = NULL;
+ }
+
+ if (authenticator_.get() == NULL) {
+ if (injected_user_context_) {
+ authenticator_ =
+ new StubAuthenticator(consumer, *injected_user_context_.get());
+ } else {
+ authenticator_ = new ChromeCryptohomeAuthenticator(consumer);
+ }
+ } else {
+ // TODO(nkostylev): Fix this hack by improving Authenticator dependencies.
+ authenticator_->SetConsumer(consumer);
+ }
+ return authenticator_;
+}
+
void UserSessionManager::StartSession(
const UserContext& user_context,
StartSessionType start_session_type,
- scoped_refptr<Authenticator> authenticator,
bool has_auth_cookies,
bool has_active_session,
UserSessionManagerDelegate* delegate) {
- authenticator_ = authenticator;
delegate_ = delegate;
start_session_type_ = start_session_type;
@@ -390,6 +416,11 @@ void UserSessionManager::StartSession(
PrepareProfile();
}
+void UserSessionManager::DelegateDeleted(UserSessionManagerDelegate* delegate) {
+ if (delegate_ == delegate)
+ delegate_ = nullptr;
+}
+
void UserSessionManager::PerformPostUserLoggedInActions() {
user_manager::UserManager* user_manager = user_manager::UserManager::Get();
if (user_manager->GetLoggedInUsers().size() == 1) {
@@ -989,7 +1020,7 @@ void UserSessionManager::FinalizePrepareProfile(Profile* profile) {
bool browser_launched = InitializeUserSession(profile);
// TODO(nkostylev): This pointer should probably never be NULL, but it looks
- // like LoginUtilsImpl::OnProfileCreated() may be getting called before
+ // like OnProfileCreated() may be getting called before
// UserSessionManager::PrepareProfile() has set |delegate_| when Chrome is
// killed during shutdown in tests -- see http://crosbug.com/18269. Replace
// this 'if' statement with a CHECK(delegate_) once the underlying issue is
@@ -1074,8 +1105,7 @@ bool UserSessionManager::InitializeUserSession(Profile* profile) {
}
}
- LoginUtils::Get()->DoBrowserLaunch(profile,
- LoginDisplayHostImpl::default_host());
+ DoBrowserLaunch(profile, LoginDisplayHostImpl::default_host());
return true;
}
@@ -1288,7 +1318,6 @@ void UserSessionManager::RestorePendingUserSessions() {
// (and session) has been loaded on Chrome startup.
StartSession(user_context,
SECONDARY_USER_SESSION_AFTER_CRASH,
- NULL, // authenticator
false, // has_auth_cookies
true, // has_active_session, this is restart after crash
this);
@@ -1451,18 +1480,23 @@ void UserSessionManager::DoBrowserLaunchInternal(Profile* profile,
VLOG(1) << "Launching browser...";
TRACE_EVENT0("login", "LaunchBrowser");
- StartupBrowserCreator browser_creator;
- int return_code;
- chrome::startup::IsFirstRun first_run =
- ::first_run::IsChromeFirstRun() ? chrome::startup::IS_FIRST_RUN
- : chrome::startup::IS_NOT_FIRST_RUN;
+ if (should_launch_browser_) {
+ StartupBrowserCreator browser_creator;
+ int return_code;
+ chrome::startup::IsFirstRun first_run =
+ ::first_run::IsChromeFirstRun() ? chrome::startup::IS_FIRST_RUN
+ : chrome::startup::IS_NOT_FIRST_RUN;
- browser_creator.LaunchBrowser(
- *base::CommandLine::ForCurrentProcess(), profile, base::FilePath(),
- chrome::startup::IS_PROCESS_STARTUP, first_run, &return_code);
+ browser_creator.LaunchBrowser(
+ *base::CommandLine::ForCurrentProcess(), profile, base::FilePath(),
+ chrome::startup::IS_PROCESS_STARTUP, first_run, &return_code);
- // Triggers app launcher start page service to load start page web contents.
- app_list::StartPageService::Get(profile);
+ // Triggers app launcher start page service to load start page web contents.
+ app_list::StartPageService::Get(profile);
+ } else {
+ LOG(WARNING) << "Browser hasn't been launched, should_launch_browser_"
+ << " is false. This is normal in some tests.";
+ }
// Mark login host for deletion after browser starts. This
// guarantees that the message loop will be referenced by the
@@ -1503,4 +1537,10 @@ void UserSessionManager::RemoveProfileForTesting(Profile* profile) {
default_ime_states_.erase(profile);
}
+void UserSessionManager::InjectStubUserContext(
+ const UserContext& user_context) {
+ injected_user_context_.reset(new UserContext(user_context));
+ authenticator_ = NULL;
+}
+
} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698