Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/chromeos/login/login_utils.h" | 5 #include "chrome/browser/chromeos/login/login_utils.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/file_path.h" | 10 #include "base/file_path.h" |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 162 // Check user's profile for kApplicationLocale setting. | 162 // Check user's profile for kApplicationLocale setting. |
| 163 void RespectLocalePreference(Profile* pref); | 163 void RespectLocalePreference(Profile* pref); |
| 164 | 164 |
| 165 // The current background view. | 165 // The current background view. |
| 166 chromeos::BackgroundView* background_view_; | 166 chromeos::BackgroundView* background_view_; |
| 167 | 167 |
| 168 std::string username_; | 168 std::string username_; |
| 169 std::string password_; | 169 std::string password_; |
| 170 GaiaAuthConsumer::ClientLoginResult credentials_; | 170 GaiaAuthConsumer::ClientLoginResult credentials_; |
| 171 bool pending_requests_; | 171 bool pending_requests_; |
| 172 bool first_login_; | |
| 172 | 173 |
| 173 // Delegate to be fired when the profile will be prepared. | 174 // Delegate to be fired when the profile will be prepared. |
| 174 LoginUtils::Delegate* delegate_; | 175 LoginUtils::Delegate* delegate_; |
| 175 | 176 |
| 176 DISALLOW_COPY_AND_ASSIGN(LoginUtilsImpl); | 177 DISALLOW_COPY_AND_ASSIGN(LoginUtilsImpl); |
| 177 }; | 178 }; |
| 178 | 179 |
| 179 class LoginUtilsWrapper { | 180 class LoginUtilsWrapper { |
| 180 public: | 181 public: |
| 181 static LoginUtilsWrapper* GetInstance() { | 182 static LoginUtilsWrapper* GetInstance() { |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 213 BootTimesLoader* btl = BootTimesLoader::Get(); | 214 BootTimesLoader* btl = BootTimesLoader::Get(); |
| 214 | 215 |
| 215 VLOG(1) << "Completing login for " << username; | 216 VLOG(1) << "Completing login for " << username; |
| 216 btl->AddLoginTimeMarker("CompletingLogin", false); | 217 btl->AddLoginTimeMarker("CompletingLogin", false); |
| 217 | 218 |
| 218 if (CrosLibrary::Get()->EnsureLoaded()) { | 219 if (CrosLibrary::Get()->EnsureLoaded()) { |
| 219 CrosLibrary::Get()->GetLoginLibrary()->StartSession(username, ""); | 220 CrosLibrary::Get()->GetLoginLibrary()->StartSession(username, ""); |
| 220 btl->AddLoginTimeMarker("StartedSession", false); | 221 btl->AddLoginTimeMarker("StartedSession", false); |
| 221 } | 222 } |
| 222 | 223 |
| 224 // Record whether this is the first login before we add the user to the | |
| 225 // UserManager. | |
| 226 first_login_ = !UserManager::Get()->IsKnownUser(username); | |
| 227 | |
| 223 UserManager::Get()->UserLoggedIn(username); | 228 UserManager::Get()->UserLoggedIn(username); |
| 224 btl->AddLoginTimeMarker("UserLoggedIn", false); | 229 btl->AddLoginTimeMarker("UserLoggedIn", false); |
| 225 | 230 |
| 226 // Switch log file as soon as possible. | 231 // Switch log file as soon as possible. |
| 227 logging::RedirectChromeLogging(*(CommandLine::ForCurrentProcess())); | 232 logging::RedirectChromeLogging(*(CommandLine::ForCurrentProcess())); |
| 228 btl->AddLoginTimeMarker("LoggingRedirected", false); | 233 btl->AddLoginTimeMarker("LoggingRedirected", false); |
| 229 | 234 |
| 230 username_ = username; | 235 username_ = username; |
| 231 password_ = password; | 236 password_ = password; |
| 232 credentials_ = credentials; | 237 credentials_ = credentials; |
| 233 pending_requests_ = pending_requests; | 238 pending_requests_ = pending_requests; |
| 234 delegate_ = delegate; | 239 delegate_ = delegate; |
| 235 | 240 |
| 236 // The default profile will have been changed because the ProfileManager | 241 // The default profile will have been changed because the ProfileManager |
| 237 // will process the notification that the UserManager sends out. | 242 // will process the notification that the UserManager sends out. |
| 238 ProfileManager::CreateDefaultProfileAsync(this); | 243 ProfileManager::CreateDefaultProfileAsync(this); |
| 239 } | 244 } |
| 240 | 245 |
| 241 void LoginUtilsImpl::OnProfileCreated(Profile* profile) { | 246 void LoginUtilsImpl::OnProfileCreated(Profile* profile) { |
| 242 CHECK(profile); | 247 CHECK(profile); |
| 243 | 248 |
| 244 BootTimesLoader* btl = BootTimesLoader::Get(); | 249 BootTimesLoader* btl = BootTimesLoader::Get(); |
| 245 btl->AddLoginTimeMarker("UserProfileGotten", false); | 250 btl->AddLoginTimeMarker("UserProfileGotten", false); |
| 246 | 251 |
| 247 bool first_login = !UserManager::Get()->IsKnownUser(username_); | |
| 248 // Change the proxy configuration service of the default request context to | 252 // Change the proxy configuration service of the default request context to |
| 249 // use the preference configuration from the logged-in profile. This ensures | 253 // use the preference configuration from the logged-in profile. This ensures |
| 250 // that requests done through the default context use the proxy configuration | 254 // that requests done through the default context use the proxy configuration |
| 251 // provided by configuration policy. | 255 // provided by configuration policy. |
| 252 // | 256 // |
| 253 // Note: Many of the clients of the default request context should probably be | 257 // Note: Many of the clients of the default request context should probably be |
| 254 // fixed to use the request context of the profile they are associated with. | 258 // fixed to use the request context of the profile they are associated with. |
| 255 // This includes preconnect, autofill, metrics service to only name a few; | 259 // This includes preconnect, autofill, metrics service to only name a few; |
| 256 // see http://code.google.com/p/chromium/issues/detail?id=64339 for details. | 260 // see http://code.google.com/p/chromium/issues/detail?id=64339 for details. |
| 257 // | 261 // |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 313 cryptohome->TpmClearStoredPassword(); | 317 cryptohome->TpmClearStoredPassword(); |
| 314 } else { | 318 } else { |
| 315 cryptohome->TpmCanAttemptOwnership(); | 319 cryptohome->TpmCanAttemptOwnership(); |
| 316 } | 320 } |
| 317 } | 321 } |
| 318 } | 322 } |
| 319 btl->AddLoginTimeMarker("TPMOwned", false); | 323 btl->AddLoginTimeMarker("TPMOwned", false); |
| 320 | 324 |
| 321 RespectLocalePreference(profile); | 325 RespectLocalePreference(profile); |
| 322 | 326 |
| 323 if (first_login) { | 327 if (first_login_) { |
|
Nikita (slow)
2011/05/20 09:33:46
Turns out that UserManager has
bool current_user_i
Zachary Kuznia
2011/05/23 08:06:35
Done.
| |
| 324 SetFirstLoginPrefs(profile->GetPrefs()); | 328 SetFirstLoginPrefs(profile->GetPrefs()); |
| 325 } | 329 } |
| 326 | 330 |
| 327 // Enable/disable plugins based on user preferences. | 331 // Enable/disable plugins based on user preferences. |
| 328 PluginUpdater::GetInstance()->SetProfile(profile); | 332 PluginUpdater::GetInstance()->SetProfile(profile); |
| 329 btl->AddLoginTimeMarker("PluginsStateUpdated", false); | 333 btl->AddLoginTimeMarker("PluginsStateUpdated", false); |
| 330 | 334 |
| 331 // We suck. This is a hack since we do not have the enterprise feature | 335 // We suck. This is a hack since we do not have the enterprise feature |
| 332 // done yet to pull down policies from the domain admin. We'll take this | 336 // done yet to pull down policies from the domain admin. We'll take this |
| 333 // out when we get that done properly. | 337 // out when we get that done properly. |
| (...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 594 // Mark login host for deletion after browser starts. This | 598 // Mark login host for deletion after browser starts. This |
| 595 // guarantees that the message loop will be referenced by the | 599 // guarantees that the message loop will be referenced by the |
| 596 // browser before it is dereferenced by the login host. | 600 // browser before it is dereferenced by the login host. |
| 597 if (login_host) { | 601 if (login_host) { |
| 598 login_host->OnSessionStart(); | 602 login_host->OnSessionStart(); |
| 599 login_host = NULL; | 603 login_host = NULL; |
| 600 } | 604 } |
| 601 } | 605 } |
| 602 | 606 |
| 603 } // namespace chromeos | 607 } // namespace chromeos |
| OLD | NEW |