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/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
(...skipping 503 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
514 } | 514 } |
515 } | 515 } |
516 | 516 |
517 int pid_; | 517 int pid_; |
518 std::string command_line_; | 518 std::string command_line_; |
519 PrefService* local_state_; | 519 PrefService* local_state_; |
520 base::OneShotTimer<JobRestartRequest> timer_; | 520 base::OneShotTimer<JobRestartRequest> timer_; |
521 }; | 521 }; |
522 | 522 |
523 class LoginUtilsImpl : public LoginUtils, | 523 class LoginUtilsImpl : public LoginUtils, |
524 public ProfileManagerObserver, | |
525 public GaiaOAuthConsumer, | 524 public GaiaOAuthConsumer, |
526 public OAuthLoginVerifier::Delegate, | 525 public OAuthLoginVerifier::Delegate, |
527 public net::NetworkChangeNotifier::OnlineStateObserver { | 526 public net::NetworkChangeNotifier::OnlineStateObserver, |
| 527 public base::SupportsWeakPtr<LoginUtilsImpl> { |
528 public: | 528 public: |
529 LoginUtilsImpl() | 529 LoginUtilsImpl() |
530 : background_view_(NULL), | 530 : background_view_(NULL), |
531 pending_requests_(false), | 531 pending_requests_(false), |
532 using_oauth_(false), | 532 using_oauth_(false), |
533 has_cookies_(false), | 533 has_cookies_(false), |
534 delegate_(NULL), | 534 delegate_(NULL), |
535 job_restart_request_(NULL) { | 535 job_restart_request_(NULL) { |
536 net::NetworkChangeNotifier::AddOnlineStateObserver(this); | 536 net::NetworkChangeNotifier::AddOnlineStateObserver(this); |
537 } | 537 } |
(...skipping 24 matching lines...) Expand all Loading... |
562 Profile* profile, | 562 Profile* profile, |
563 const GaiaAuthConsumer::ClientLoginResult& credentials) OVERRIDE; | 563 const GaiaAuthConsumer::ClientLoginResult& credentials) OVERRIDE; |
564 virtual void SetBackgroundView( | 564 virtual void SetBackgroundView( |
565 chromeos::BackgroundView* background_view) OVERRIDE; | 565 chromeos::BackgroundView* background_view) OVERRIDE; |
566 virtual chromeos::BackgroundView* GetBackgroundView() OVERRIDE; | 566 virtual chromeos::BackgroundView* GetBackgroundView() OVERRIDE; |
567 virtual void TransferDefaultCookies(Profile* default_profile, | 567 virtual void TransferDefaultCookies(Profile* default_profile, |
568 Profile* new_profile) OVERRIDE; | 568 Profile* new_profile) OVERRIDE; |
569 virtual void TransferDefaultAuthCache(Profile* default_profile, | 569 virtual void TransferDefaultAuthCache(Profile* default_profile, |
570 Profile* new_profile) OVERRIDE; | 570 Profile* new_profile) OVERRIDE; |
571 | 571 |
572 // ProfileManagerObserver implementation: | |
573 virtual void OnProfileCreated(Profile* profile, Status status) OVERRIDE; | |
574 | |
575 // GaiaOAuthConsumer overrides. | 572 // GaiaOAuthConsumer overrides. |
576 virtual void OnGetOAuthTokenSuccess(const std::string& oauth_token) OVERRIDE; | 573 virtual void OnGetOAuthTokenSuccess(const std::string& oauth_token) OVERRIDE; |
577 virtual void OnGetOAuthTokenFailure( | 574 virtual void OnGetOAuthTokenFailure( |
578 const GoogleServiceAuthError& error) OVERRIDE; | 575 const GoogleServiceAuthError& error) OVERRIDE; |
579 virtual void OnOAuthGetAccessTokenSuccess(const std::string& token, | 576 virtual void OnOAuthGetAccessTokenSuccess(const std::string& token, |
580 const std::string& secret) OVERRIDE; | 577 const std::string& secret) OVERRIDE; |
581 virtual void OnOAuthGetAccessTokenFailure( | 578 virtual void OnOAuthGetAccessTokenFailure( |
582 const GoogleServiceAuthError& error) OVERRIDE; | 579 const GoogleServiceAuthError& error) OVERRIDE; |
583 | 580 |
584 // OAuthLoginVerifier::Delegate overrides. | 581 // OAuthLoginVerifier::Delegate overrides. |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
632 const std::string& secret); | 629 const std::string& secret); |
633 | 630 |
634 // Fetch enterprise policy OAuth2 given OAuth1 access |token| and |secret|. | 631 // Fetch enterprise policy OAuth2 given OAuth1 access |token| and |secret|. |
635 void FetchPolicyToken(Profile* offrecord_profile, | 632 void FetchPolicyToken(Profile* offrecord_profile, |
636 const std::string& token, | 633 const std::string& token, |
637 const std::string& secret); | 634 const std::string& secret); |
638 | 635 |
639 // Check user's profile for kApplicationLocale setting. | 636 // Check user's profile for kApplicationLocale setting. |
640 void RespectLocalePreference(Profile* pref); | 637 void RespectLocalePreference(Profile* pref); |
641 | 638 |
| 639 // Callback for asynchronous profile creation. |
| 640 void OnProfileCreated(Profile* profile, |
| 641 Profile::CreateStatus status); |
| 642 |
642 // The current background view. | 643 // The current background view. |
643 chromeos::BackgroundView* background_view_; | 644 chromeos::BackgroundView* background_view_; |
644 | 645 |
645 std::string password_; | 646 std::string password_; |
646 GaiaAuthConsumer::ClientLoginResult credentials_; | 647 GaiaAuthConsumer::ClientLoginResult credentials_; |
647 bool pending_requests_; | 648 bool pending_requests_; |
648 bool using_oauth_; | 649 bool using_oauth_; |
649 bool has_cookies_; | 650 bool has_cookies_; |
650 // Has to be scoped_refptr, see comment for CreateAuthenticator(...). | 651 // Has to be scoped_refptr, see comment for CreateAuthenticator(...). |
651 scoped_refptr<Authenticator> authenticator_; | 652 scoped_refptr<Authenticator> authenticator_; |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
751 // Profile creation will block until user policy is fetched, which | 752 // Profile creation will block until user policy is fetched, which |
752 // requires the DeviceManagement token. Try to fetch it now. | 753 // requires the DeviceManagement token. Try to fetch it now. |
753 VLOG(1) << "Profile creation requires policy token, fetching now"; | 754 VLOG(1) << "Profile creation requires policy token, fetching now"; |
754 policy_oauth_fetcher_.reset( | 755 policy_oauth_fetcher_.reset( |
755 new PolicyOAuthFetcher(authenticator_->authentication_profile())); | 756 new PolicyOAuthFetcher(authenticator_->authentication_profile())); |
756 policy_oauth_fetcher_->Start(); | 757 policy_oauth_fetcher_->Start(); |
757 } | 758 } |
758 | 759 |
759 // The default profile will have been changed because the ProfileManager | 760 // The default profile will have been changed because the ProfileManager |
760 // will process the notification that the UserManager sends out. | 761 // will process the notification that the UserManager sends out. |
761 ProfileManager::CreateDefaultProfileAsync(this); | 762 ProfileManager::CreateDefaultProfileAsync( |
| 763 base::Bind(&LoginUtilsImpl::OnProfileCreated, AsWeakPtr())); |
762 } | 764 } |
763 | 765 |
764 void LoginUtilsImpl::DelegateDeleted(LoginUtils::Delegate* delegate) { | 766 void LoginUtilsImpl::DelegateDeleted(LoginUtils::Delegate* delegate) { |
765 if (delegate_ == delegate) | 767 if (delegate_ == delegate) |
766 delegate_ = NULL; | 768 delegate_ = NULL; |
767 } | 769 } |
768 | 770 |
769 void LoginUtilsImpl::OnProfileCreated(Profile* user_profile, Status status) { | 771 void LoginUtilsImpl::OnProfileCreated( |
| 772 Profile* user_profile, |
| 773 Profile::CreateStatus status) { |
770 CHECK(user_profile); | 774 CHECK(user_profile); |
771 switch (status) { | 775 switch (status) { |
772 case STATUS_INITIALIZED: | 776 case Profile::CREATE_STATUS_INITIALIZED: |
773 break; | 777 break; |
774 case STATUS_CREATED: | 778 case Profile::CREATE_STATUS_CREATED: |
775 if (UserManager::Get()->current_user_is_new()) | 779 if (UserManager::Get()->current_user_is_new()) |
776 SetFirstLoginPrefs(user_profile->GetPrefs()); | 780 SetFirstLoginPrefs(user_profile->GetPrefs()); |
777 RespectLocalePreference(user_profile); | 781 RespectLocalePreference(user_profile); |
778 return; | 782 return; |
779 case STATUS_FAIL: | 783 case Profile::CREATE_STATUS_FAIL: |
780 default: | 784 default: |
781 NOTREACHED(); | 785 NOTREACHED(); |
782 return; | 786 return; |
783 } | 787 } |
784 | 788 |
785 BootTimesLoader* btl = BootTimesLoader::Get(); | 789 BootTimesLoader* btl = BootTimesLoader::Get(); |
786 btl->AddLoginTimeMarker("UserProfileGotten", false); | 790 btl->AddLoginTimeMarker("UserProfileGotten", false); |
787 | 791 |
788 if (using_oauth_) { | 792 if (using_oauth_) { |
789 // Reuse the access token fetched by the PolicyOAuthFetcher, if it was | 793 // Reuse the access token fetched by the PolicyOAuthFetcher, if it was |
(...skipping 542 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1332 // Mark login host for deletion after browser starts. This | 1336 // Mark login host for deletion after browser starts. This |
1333 // guarantees that the message loop will be referenced by the | 1337 // guarantees that the message loop will be referenced by the |
1334 // browser before it is dereferenced by the login host. | 1338 // browser before it is dereferenced by the login host. |
1335 if (login_host) { | 1339 if (login_host) { |
1336 login_host->OnSessionStart(); | 1340 login_host->OnSessionStart(); |
1337 login_host = NULL; | 1341 login_host = NULL; |
1338 } | 1342 } |
1339 } | 1343 } |
1340 | 1344 |
1341 } // namespace chromeos | 1345 } // namespace chromeos |
OLD | NEW |