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 398 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
409 AddCallback("usingSAMLAPI", &GaiaScreenHandler::HandleUsingSAMLAPI); | 409 AddCallback("usingSAMLAPI", &GaiaScreenHandler::HandleUsingSAMLAPI); |
410 AddCallback("scrapedPasswordCount", | 410 AddCallback("scrapedPasswordCount", |
411 &GaiaScreenHandler::HandleScrapedPasswordCount); | 411 &GaiaScreenHandler::HandleScrapedPasswordCount); |
412 AddCallback("scrapedPasswordVerificationFailed", | 412 AddCallback("scrapedPasswordVerificationFailed", |
413 &GaiaScreenHandler::HandleScrapedPasswordVerificationFailed); | 413 &GaiaScreenHandler::HandleScrapedPasswordVerificationFailed); |
414 AddCallback("loginWebuiReady", &GaiaScreenHandler::HandleGaiaUIReady); | 414 AddCallback("loginWebuiReady", &GaiaScreenHandler::HandleGaiaUIReady); |
415 AddCallback("toggleWebviewSignin", | 415 AddCallback("toggleWebviewSignin", |
416 &GaiaScreenHandler::HandleToggleWebviewSignin); | 416 &GaiaScreenHandler::HandleToggleWebviewSignin); |
417 AddCallback("toggleEasyBootstrap", | 417 AddCallback("toggleEasyBootstrap", |
418 &GaiaScreenHandler::HandleToggleEasyBootstrap); | 418 &GaiaScreenHandler::HandleToggleEasyBootstrap); |
419 AddCallback("attemptLogin", &GaiaScreenHandler::HandleAttemptLogin); | |
419 } | 420 } |
420 | 421 |
421 void GaiaScreenHandler::HandleFrameLoadingCompleted(int status) { | 422 void GaiaScreenHandler::HandleFrameLoadingCompleted(int status) { |
422 const net::Error frame_error = static_cast<net::Error>(-status); | 423 const net::Error frame_error = static_cast<net::Error>(-status); |
423 if (frame_error == net::ERR_ABORTED) { | 424 if (frame_error == net::ERR_ABORTED) { |
424 LOG(WARNING) << "Ignoring Gaia frame error: " << frame_error; | 425 LOG(WARNING) << "Ignoring Gaia frame error: " << frame_error; |
425 return; | 426 return; |
426 } | 427 } |
427 frame_error_ = frame_error; | 428 frame_error_ = frame_error; |
428 if (frame_error == net::OK) { | 429 if (frame_error == net::OK) { |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
571 } | 572 } |
572 | 573 |
573 void GaiaScreenHandler::HandleToggleEasyBootstrap() { | 574 void GaiaScreenHandler::HandleToggleEasyBootstrap() { |
574 use_easy_bootstrap_ = !use_easy_bootstrap_; | 575 use_easy_bootstrap_ = !use_easy_bootstrap_; |
575 const bool kForceReload = true; | 576 const bool kForceReload = true; |
576 const bool kSilentLoad = true; | 577 const bool kSilentLoad = true; |
577 const bool kNoOfflineUI = false; | 578 const bool kNoOfflineUI = false; |
578 LoadAuthExtension(kForceReload, kSilentLoad, kNoOfflineUI); | 579 LoadAuthExtension(kForceReload, kSilentLoad, kNoOfflineUI); |
579 } | 580 } |
580 | 581 |
582 void GaiaScreenHandler::HandleAttemptLogin(const std::string& email) { | |
583 std::string device_id = | |
584 user_manager::UserManager::Get()->GetKnownUserDeviceId( | |
585 gaia::CanonicalizeEmail(email)); | |
586 | |
587 if (!device_id.empty() && StartupUtils::IsWebviewSigninEnabled()) { | |
588 base::DictionaryValue params; | |
589 params.SetString("deviceId", device_id); | |
590 CallJS("updateDeviceId", params); | |
591 } else { | |
592 // Mark current temporary device Id as used. | |
593 temporary_device_id_ = std::string(); | |
594 } | |
595 } | |
596 | |
581 void GaiaScreenHandler::HandleGaiaUIReady() { | 597 void GaiaScreenHandler::HandleGaiaUIReady() { |
582 if (focus_stolen_) { | 598 if (focus_stolen_) { |
583 // Set focus to the Gaia page. | 599 // Set focus to the Gaia page. |
584 // TODO(altimofeev): temporary solution, until focus parameters are | 600 // TODO(altimofeev): temporary solution, until focus parameters are |
585 // implemented on the Gaia side. | 601 // implemented on the Gaia side. |
586 // Do this only once. Any subsequent call would relod GAIA frame. | 602 // Do this only once. Any subsequent call would relod GAIA frame. |
587 focus_stolen_ = false; | 603 focus_stolen_ = false; |
588 const char code[] = | 604 const char code[] = |
589 "if (typeof gWindowOnLoad != 'undefined') gWindowOnLoad();"; | 605 "if (typeof gWindowOnLoad != 'undefined') gWindowOnLoad();"; |
590 content::RenderFrameHost* frame = InlineLoginUI::GetAuthFrame( | 606 content::RenderFrameHost* frame = InlineLoginUI::GetAuthFrame( |
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
913 | 929 |
914 std::string gaia_id; | 930 std::string gaia_id; |
915 if (user_manager::UserManager::Get()->FindGaiaID(context.email, &gaia_id)) | 931 if (user_manager::UserManager::Get()->FindGaiaID(context.email, &gaia_id)) |
916 context.gaia_id = gaia_id; | 932 context.gaia_id = gaia_id; |
917 | 933 |
918 if (Delegate()) { | 934 if (Delegate()) { |
919 context.show_users = Delegate()->IsShowUsers(); | 935 context.show_users = Delegate()->IsShowUsers(); |
920 context.has_users = !Delegate()->GetUsers().empty(); | 936 context.has_users = !Delegate()->GetUsers().empty(); |
921 } | 937 } |
922 | 938 |
939 if (!context.email.empty()) { | |
940 context.device_id = user_manager::UserManager::Get()->GetKnownUserDeviceId( | |
941 gaia::CanonicalizeEmail(context.email)); | |
942 } | |
943 | |
923 if (context.device_id.empty()) { | 944 if (context.device_id.empty()) { |
Nikita (slow)
2015/04/23 12:23:12
nit: drop {}
Alexander Alekseev
2015/04/24 12:01:57
Done.
| |
924 context.device_id = base::GenerateGUID(); | 945 context.device_id = GetTemporaryDeviceId(); |
925 DCHECK(!context.device_id.empty()); | |
926 } | 946 } |
927 context.session_is_ephemeral = | 947 context.session_is_ephemeral = |
928 ChromeUserManager::Get()->AreEphemeralUsersEnabled(); | 948 ChromeUserManager::Get()->AreEphemeralUsersEnabled(); |
929 | 949 |
930 populated_email_.clear(); | 950 populated_email_.clear(); |
931 | 951 |
932 LoadGaia(context); | 952 LoadGaia(context); |
933 } | 953 } |
934 | 954 |
935 void GaiaScreenHandler::UpdateState(NetworkError::ErrorReason reason) { | 955 void GaiaScreenHandler::UpdateState(NetworkError::ErrorReason reason) { |
936 if (signin_screen_handler_) | 956 if (signin_screen_handler_) |
937 signin_screen_handler_->UpdateState(reason); | 957 signin_screen_handler_->UpdateState(reason); |
938 } | 958 } |
939 | 959 |
940 SigninScreenHandlerDelegate* GaiaScreenHandler::Delegate() { | 960 SigninScreenHandlerDelegate* GaiaScreenHandler::Delegate() { |
941 DCHECK(signin_screen_handler_); | 961 DCHECK(signin_screen_handler_); |
942 return signin_screen_handler_->delegate_; | 962 return signin_screen_handler_->delegate_; |
943 } | 963 } |
944 | 964 |
945 void GaiaScreenHandler::SetSigninScreenHandler(SigninScreenHandler* handler) { | 965 void GaiaScreenHandler::SetSigninScreenHandler(SigninScreenHandler* handler) { |
946 signin_screen_handler_ = handler; | 966 signin_screen_handler_ = handler; |
947 } | 967 } |
948 | 968 |
969 std::string GaiaScreenHandler::GetTemporaryDeviceId() { | |
970 if (temporary_device_id_.empty()) | |
971 temporary_device_id_ = base::GenerateGUID(); | |
972 | |
973 DCHECK(!temporary_device_id_.empty()); | |
974 return temporary_device_id_; | |
975 } | |
976 | |
949 } // namespace chromeos | 977 } // namespace chromeos |
OLD | NEW |