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

Side by Side Diff: chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc

Issue 473153002: Inline sign in extracts gaia id from HTTP header and seeds account tracker (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix one unit test, progress on second Created 6 years, 2 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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/logging.h" 8 #include "base/logging.h"
9 #include "base/metrics/histogram.h" 9 #include "base/metrics/histogram.h"
10 #include "base/prefs/pref_service.h" 10 #include "base/prefs/pref_service.h"
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 312
313 if (network_state_informer_->state() != NetworkStateInformer::ONLINE) 313 if (network_state_informer_->state() != NetworkStateInformer::ONLINE)
314 return; 314 return;
315 if (frame_state_ == FRAME_STATE_LOADED) 315 if (frame_state_ == FRAME_STATE_LOADED)
316 UpdateState(ErrorScreenActor::ERROR_REASON_UPDATE); 316 UpdateState(ErrorScreenActor::ERROR_REASON_UPDATE);
317 else if (frame_state_ == FRAME_STATE_ERROR) 317 else if (frame_state_ == FRAME_STATE_ERROR)
318 UpdateState(ErrorScreenActor::ERROR_REASON_FRAME_ERROR); 318 UpdateState(ErrorScreenActor::ERROR_REASON_FRAME_ERROR);
319 } 319 }
320 320
321 void GaiaScreenHandler::HandleCompleteAuthentication( 321 void GaiaScreenHandler::HandleCompleteAuthentication(
322 const std::string& gaia_id,
322 const std::string& email, 323 const std::string& email,
323 const std::string& password, 324 const std::string& password,
324 const std::string& auth_code) { 325 const std::string& auth_code) {
325 if (!Delegate()) 326 if (!Delegate())
326 return; 327 return;
328
329 DCHECK(!email.empty());
330 DCHECK(!gaia_id.empty());
327 Delegate()->SetDisplayEmail(gaia::SanitizeEmail(email)); 331 Delegate()->SetDisplayEmail(gaia::SanitizeEmail(email));
328 UserContext user_context(email); 332 UserContext user_context(email);
333 user_context.SetGaiaID(gaia_id);
329 user_context.SetKey(Key(password)); 334 user_context.SetKey(Key(password));
330 user_context.SetAuthCode(auth_code); 335 user_context.SetAuthCode(auth_code);
331 Delegate()->CompleteLogin(user_context); 336 Delegate()->CompleteLogin(user_context);
332 } 337 }
333 338
334 void GaiaScreenHandler::HandleCompleteLogin(const std::string& typed_email, 339 void GaiaScreenHandler::HandleCompleteLogin(const std::string& gaia_id,
340 const std::string& typed_email,
335 const std::string& password, 341 const std::string& password,
336 bool using_saml) { 342 bool using_saml) {
337 if (!is_enrolling_consumer_management_) { 343 if (!is_enrolling_consumer_management_) {
338 DoCompleteLogin(typed_email, password, using_saml); 344 DoCompleteLogin(gaia_id, typed_email, password, using_saml);
339 return; 345 return;
340 } 346 }
341 347
342 // Consumer management enrollment is in progress. 348 // Consumer management enrollment is in progress.
343 const std::string owner_email = 349 const std::string owner_email =
344 user_manager::UserManager::Get()->GetOwnerEmail(); 350 user_manager::UserManager::Get()->GetOwnerEmail();
345 if (typed_email != owner_email) { 351 if (typed_email != owner_email) {
346 // Show Gaia sign-in screen again, since we only allow the owner to sign 352 // Show Gaia sign-in screen again, since we only allow the owner to sign
347 // in. 353 // in.
348 populated_email_ = owner_email; 354 populated_email_ = owner_email;
349 ShowGaia(is_enrolling_consumer_management_); 355 ShowGaia(is_enrolling_consumer_management_);
350 return; 356 return;
351 } 357 }
352 358
353 CHECK(consumer_management_); 359 CHECK(consumer_management_);
354 consumer_management_->SetOwner(owner_email, 360 consumer_management_->SetOwner(owner_email,
355 base::Bind(&GaiaScreenHandler::OnSetOwnerDone, 361 base::Bind(&GaiaScreenHandler::OnSetOwnerDone,
356 weak_factory_.GetWeakPtr(), 362 weak_factory_.GetWeakPtr(),
363 gaia_id,
357 typed_email, 364 typed_email,
358 password, 365 password,
359 using_saml)); 366 using_saml));
360 } 367 }
361 368
362 void GaiaScreenHandler::HandleUsingSAMLAPI() { 369 void GaiaScreenHandler::HandleUsingSAMLAPI() {
363 SetSAMLPrincipalsAPIUsed(true); 370 SetSAMLPrincipalsAPIUsed(true);
364 } 371 }
365 372
366 void GaiaScreenHandler::HandleScrapedPasswordCount(int password_count) { 373 void GaiaScreenHandler::HandleScrapedPasswordCount(int password_count) {
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
410 // focus to current pod (see crbug/175243). 417 // focus to current pod (see crbug/175243).
411 DCHECK(signin_screen_handler_); 418 DCHECK(signin_screen_handler_);
412 signin_screen_handler_->RefocusCurrentPod(); 419 signin_screen_handler_->RefocusCurrentPod();
413 } 420 }
414 HandleFrameLoadingCompleted(0); 421 HandleFrameLoadingCompleted(0);
415 422
416 if (test_expects_complete_login_) 423 if (test_expects_complete_login_)
417 SubmitLoginFormForTest(); 424 SubmitLoginFormForTest();
418 } 425 }
419 426
420 void GaiaScreenHandler::OnSetOwnerDone(const std::string& typed_email, 427 void GaiaScreenHandler::OnSetOwnerDone(const std::string& gaia_id,
428 const std::string& typed_email,
421 const std::string& password, 429 const std::string& password,
422 bool using_saml, 430 bool using_saml,
423 bool success) { 431 bool success) {
424 CHECK(consumer_management_); 432 CHECK(consumer_management_);
425 if (success) { 433 if (success) {
426 consumer_management_->SetEnrollmentStage( 434 consumer_management_->SetEnrollmentStage(
427 policy::ConsumerManagementService::ENROLLMENT_STAGE_OWNER_STORED); 435 policy::ConsumerManagementService::ENROLLMENT_STAGE_OWNER_STORED);
428 } else { 436 } else {
429 LOG(ERROR) << "Failed to write owner e-mail to boot lockbox."; 437 LOG(ERROR) << "Failed to write owner e-mail to boot lockbox.";
430 consumer_management_->SetEnrollmentStage( 438 consumer_management_->SetEnrollmentStage(
431 policy::ConsumerManagementService:: 439 policy::ConsumerManagementService::
432 ENROLLMENT_STAGE_BOOT_LOCKBOX_FAILED); 440 ENROLLMENT_STAGE_BOOT_LOCKBOX_FAILED);
433 // We should continue logging in the user, as there's not much we can do 441 // We should continue logging in the user, as there's not much we can do
434 // here. 442 // here.
435 } 443 }
436 DoCompleteLogin(typed_email, password, using_saml); 444 DoCompleteLogin(gaia_id, typed_email, password, using_saml);
437 } 445 }
438 446
439 void GaiaScreenHandler::DoCompleteLogin(const std::string& typed_email, 447 void GaiaScreenHandler::DoCompleteLogin(const std::string& gaia_id,
448 const std::string& typed_email,
440 const std::string& password, 449 const std::string& password,
441 bool using_saml) { 450 bool using_saml) {
442 if (!Delegate()) 451 if (!Delegate())
443 return; 452 return;
444 453
445 if (using_saml && !using_saml_api_) 454 if (using_saml && !using_saml_api_)
446 RecordSAMLScrapingVerificationResultInHistogram(true); 455 RecordSAMLScrapingVerificationResultInHistogram(true);
447 456
457 DCHECK(!typed_email.empty());
458 DCHECK(!gaia_id.empty());
448 const std::string sanitized_email = gaia::SanitizeEmail(typed_email); 459 const std::string sanitized_email = gaia::SanitizeEmail(typed_email);
449 Delegate()->SetDisplayEmail(sanitized_email); 460 Delegate()->SetDisplayEmail(sanitized_email);
450 UserContext user_context(sanitized_email); 461 UserContext user_context(sanitized_email);
462 user_context.SetGaiaID(gaia_id);
451 user_context.SetKey(Key(password)); 463 user_context.SetKey(Key(password));
452 user_context.SetAuthFlow(using_saml 464 user_context.SetAuthFlow(using_saml
453 ? UserContext::AUTH_FLOW_GAIA_WITH_SAML 465 ? UserContext::AUTH_FLOW_GAIA_WITH_SAML
454 : UserContext::AUTH_FLOW_GAIA_WITHOUT_SAML); 466 : UserContext::AUTH_FLOW_GAIA_WITHOUT_SAML);
455 Delegate()->CompleteLogin(user_context); 467 Delegate()->CompleteLogin(user_context);
456 468
457 if (test_expects_complete_login_) { 469 if (test_expects_complete_login_) {
458 VLOG(2) << "Complete test login for " << typed_email 470 VLOG(2) << "Complete test login for " << typed_email
459 << ", requested=" << test_user_; 471 << ", requested=" << test_user_;
460 472
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
689 701
690 SigninScreenHandlerDelegate* GaiaScreenHandler::Delegate() { 702 SigninScreenHandlerDelegate* GaiaScreenHandler::Delegate() {
691 DCHECK(signin_screen_handler_); 703 DCHECK(signin_screen_handler_);
692 return signin_screen_handler_->delegate_; 704 return signin_screen_handler_->delegate_;
693 } 705 }
694 706
695 void GaiaScreenHandler::SetSigninScreenHandler(SigninScreenHandler* handler) { 707 void GaiaScreenHandler::SetSigninScreenHandler(SigninScreenHandler* handler) {
696 signin_screen_handler_ = handler; 708 signin_screen_handler_ = handler;
697 } 709 }
698 } // namespace chromeos 710 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698