OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/ui/webui/chromeos/login/gaia_screen_handler.h" | 5 #include "chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/guid.h" | 8 #include "base/guid.h" |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/metrics/histogram.h" | 10 #include "base/metrics/histogram.h" |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
169 dns_clear_task_running_(false), | 169 dns_clear_task_running_(false), |
170 cookies_cleared_(false), | 170 cookies_cleared_(false), |
171 show_when_dns_and_cookies_cleared_(false), | 171 show_when_dns_and_cookies_cleared_(false), |
172 focus_stolen_(false), | 172 focus_stolen_(false), |
173 gaia_silent_load_(false), | 173 gaia_silent_load_(false), |
174 using_saml_api_(false), | 174 using_saml_api_(false), |
175 is_enrolling_consumer_management_(false), | 175 is_enrolling_consumer_management_(false), |
176 test_expects_complete_login_(false), | 176 test_expects_complete_login_(false), |
177 use_easy_bootstrap_(false), | 177 use_easy_bootstrap_(false), |
178 signin_screen_handler_(NULL), | 178 signin_screen_handler_(NULL), |
179 temporary_device_id_(base::GenerateGUID()), | |
Nikita (slow)
2015/04/22 16:46:52
As discussed, let's store this device ID only to a
Alexander Alekseev
2015/04/22 17:58:07
Done.
| |
179 weak_factory_(this) { | 180 weak_factory_(this) { |
180 DCHECK(network_state_informer_.get()); | 181 DCHECK(network_state_informer_.get()); |
182 DCHECK(!temporary_device_id_.empty()); | |
181 } | 183 } |
182 | 184 |
183 GaiaScreenHandler::~GaiaScreenHandler() { | 185 GaiaScreenHandler::~GaiaScreenHandler() { |
184 } | 186 } |
185 | 187 |
186 void GaiaScreenHandler::LoadGaia(const GaiaContext& context) { | 188 void GaiaScreenHandler::LoadGaia(const GaiaContext& context) { |
187 if (!auth_extension_) { | 189 if (!auth_extension_) { |
188 Profile* signin_profile = ProfileHelper::GetSigninProfile(); | 190 Profile* signin_profile = ProfileHelper::GetSigninProfile(); |
189 auth_extension_.reset(new ScopedGaiaAuthExtension(signin_profile)); | 191 auth_extension_.reset(new ScopedGaiaAuthExtension(signin_profile)); |
190 } | 192 } |
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
409 AddCallback("usingSAMLAPI", &GaiaScreenHandler::HandleUsingSAMLAPI); | 411 AddCallback("usingSAMLAPI", &GaiaScreenHandler::HandleUsingSAMLAPI); |
410 AddCallback("scrapedPasswordCount", | 412 AddCallback("scrapedPasswordCount", |
411 &GaiaScreenHandler::HandleScrapedPasswordCount); | 413 &GaiaScreenHandler::HandleScrapedPasswordCount); |
412 AddCallback("scrapedPasswordVerificationFailed", | 414 AddCallback("scrapedPasswordVerificationFailed", |
413 &GaiaScreenHandler::HandleScrapedPasswordVerificationFailed); | 415 &GaiaScreenHandler::HandleScrapedPasswordVerificationFailed); |
414 AddCallback("loginWebuiReady", &GaiaScreenHandler::HandleGaiaUIReady); | 416 AddCallback("loginWebuiReady", &GaiaScreenHandler::HandleGaiaUIReady); |
415 AddCallback("toggleWebviewSignin", | 417 AddCallback("toggleWebviewSignin", |
416 &GaiaScreenHandler::HandleToggleWebviewSignin); | 418 &GaiaScreenHandler::HandleToggleWebviewSignin); |
417 AddCallback("toggleEasyBootstrap", | 419 AddCallback("toggleEasyBootstrap", |
418 &GaiaScreenHandler::HandleToggleEasyBootstrap); | 420 &GaiaScreenHandler::HandleToggleEasyBootstrap); |
421 AddCallback("attemptLogin", &GaiaScreenHandler::HandleAttemptLogin); | |
419 } | 422 } |
420 | 423 |
421 void GaiaScreenHandler::HandleFrameLoadingCompleted(int status) { | 424 void GaiaScreenHandler::HandleFrameLoadingCompleted(int status) { |
422 const net::Error frame_error = static_cast<net::Error>(-status); | 425 const net::Error frame_error = static_cast<net::Error>(-status); |
423 if (frame_error == net::ERR_ABORTED) { | 426 if (frame_error == net::ERR_ABORTED) { |
424 LOG(WARNING) << "Ignoring Gaia frame error: " << frame_error; | 427 LOG(WARNING) << "Ignoring Gaia frame error: " << frame_error; |
425 return; | 428 return; |
426 } | 429 } |
427 frame_error_ = frame_error; | 430 frame_error_ = frame_error; |
428 if (frame_error == net::OK) { | 431 if (frame_error == net::OK) { |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
571 } | 574 } |
572 | 575 |
573 void GaiaScreenHandler::HandleToggleEasyBootstrap() { | 576 void GaiaScreenHandler::HandleToggleEasyBootstrap() { |
574 use_easy_bootstrap_ = !use_easy_bootstrap_; | 577 use_easy_bootstrap_ = !use_easy_bootstrap_; |
575 const bool kForceReload = true; | 578 const bool kForceReload = true; |
576 const bool kSilentLoad = true; | 579 const bool kSilentLoad = true; |
577 const bool kNoOfflineUI = false; | 580 const bool kNoOfflineUI = false; |
578 LoadAuthExtension(kForceReload, kSilentLoad, kNoOfflineUI); | 581 LoadAuthExtension(kForceReload, kSilentLoad, kNoOfflineUI); |
579 } | 582 } |
580 | 583 |
584 void GaiaScreenHandler::HandleAttemptLogin(const std::string& email) { | |
585 std::string device_id = | |
586 user_manager::UserManager::Get()->GetKnownUserDeviceId( | |
587 gaia::CanonicalizeEmail(email)); | |
588 | |
589 if (!device_id.empty() && StartupUtils::IsWebviewSigninEnabled()) { | |
590 base::DictionaryValue params; | |
591 params.SetString("deviceId", device_id); | |
592 CallJS("updateDeviceId", params); | |
593 } | |
594 } | |
595 | |
581 void GaiaScreenHandler::HandleGaiaUIReady() { | 596 void GaiaScreenHandler::HandleGaiaUIReady() { |
582 if (focus_stolen_) { | 597 if (focus_stolen_) { |
583 // Set focus to the Gaia page. | 598 // Set focus to the Gaia page. |
584 // TODO(altimofeev): temporary solution, until focus parameters are | 599 // TODO(altimofeev): temporary solution, until focus parameters are |
585 // implemented on the Gaia side. | 600 // implemented on the Gaia side. |
586 // Do this only once. Any subsequent call would relod GAIA frame. | 601 // Do this only once. Any subsequent call would relod GAIA frame. |
587 focus_stolen_ = false; | 602 focus_stolen_ = false; |
588 const char code[] = | 603 const char code[] = |
589 "if (typeof gWindowOnLoad != 'undefined') gWindowOnLoad();"; | 604 "if (typeof gWindowOnLoad != 'undefined') gWindowOnLoad();"; |
590 content::RenderFrameHost* frame = InlineLoginUI::GetAuthFrame( | 605 content::RenderFrameHost* frame = InlineLoginUI::GetAuthFrame( |
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
913 | 928 |
914 std::string gaia_id; | 929 std::string gaia_id; |
915 if (user_manager::UserManager::Get()->FindGaiaID(context.email, &gaia_id)) | 930 if (user_manager::UserManager::Get()->FindGaiaID(context.email, &gaia_id)) |
916 context.gaia_id = gaia_id; | 931 context.gaia_id = gaia_id; |
917 | 932 |
918 if (Delegate()) { | 933 if (Delegate()) { |
919 context.show_users = Delegate()->IsShowUsers(); | 934 context.show_users = Delegate()->IsShowUsers(); |
920 context.has_users = !Delegate()->GetUsers().empty(); | 935 context.has_users = !Delegate()->GetUsers().empty(); |
921 } | 936 } |
922 | 937 |
938 if (!context.email.empty()) { | |
939 context.device_id = user_manager::UserManager::Get()->GetKnownUserDeviceId( | |
940 gaia::CanonicalizeEmail(context.email)); | |
941 } | |
942 | |
923 if (context.device_id.empty()) { | 943 if (context.device_id.empty()) { |
924 context.device_id = base::GenerateGUID(); | 944 context.device_id = temporary_device_id_; |
925 DCHECK(!context.device_id.empty()); | |
926 } | 945 } |
927 context.session_is_ephemeral = | 946 context.session_is_ephemeral = |
928 ChromeUserManager::Get()->AreEphemeralUsersEnabled(); | 947 ChromeUserManager::Get()->AreEphemeralUsersEnabled(); |
929 | 948 |
930 populated_email_.clear(); | 949 populated_email_.clear(); |
931 | 950 |
932 LoadGaia(context); | 951 LoadGaia(context); |
933 } | 952 } |
934 | 953 |
935 void GaiaScreenHandler::UpdateState(NetworkError::ErrorReason reason) { | 954 void GaiaScreenHandler::UpdateState(NetworkError::ErrorReason reason) { |
936 if (signin_screen_handler_) | 955 if (signin_screen_handler_) |
937 signin_screen_handler_->UpdateState(reason); | 956 signin_screen_handler_->UpdateState(reason); |
938 } | 957 } |
939 | 958 |
940 SigninScreenHandlerDelegate* GaiaScreenHandler::Delegate() { | 959 SigninScreenHandlerDelegate* GaiaScreenHandler::Delegate() { |
941 DCHECK(signin_screen_handler_); | 960 DCHECK(signin_screen_handler_); |
942 return signin_screen_handler_->delegate_; | 961 return signin_screen_handler_->delegate_; |
943 } | 962 } |
944 | 963 |
945 void GaiaScreenHandler::SetSigninScreenHandler(SigninScreenHandler* handler) { | 964 void GaiaScreenHandler::SetSigninScreenHandler(SigninScreenHandler* handler) { |
946 signin_screen_handler_ = handler; | 965 signin_screen_handler_ = handler; |
947 } | 966 } |
948 | 967 |
949 } // namespace chromeos | 968 } // namespace chromeos |
OLD | NEW |