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

Side by Side Diff: chrome/browser/chrome_browser_main.cc

Issue 8635012: [cros] Fix crash in StubLogin. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 1 month 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/chrome_browser_main.h" 5 #include "chrome/browser/chrome_browser_main.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 460 matching lines...) Expand 10 before | Expand all | Expand 10 after
471 return NULL; 471 return NULL;
472 } 472 }
473 473
474 #if defined(OS_CHROMEOS) 474 #if defined(OS_CHROMEOS)
475 475
476 // Class is used to login using passed username and password. 476 // Class is used to login using passed username and password.
477 // The instance will be deleted upon success or failure. 477 // The instance will be deleted upon success or failure.
478 class StubLogin : public chromeos::LoginStatusConsumer, 478 class StubLogin : public chromeos::LoginStatusConsumer,
479 public chromeos::LoginUtils::Delegate { 479 public chromeos::LoginUtils::Delegate {
480 public: 480 public:
481 StubLogin(std::string username, std::string password) { 481 StubLogin(std::string username, std::string password)
482 : pending_requests_(false),
483 profile_prepared_(false) {
482 authenticator_ = chromeos::LoginUtils::Get()->CreateAuthenticator(this); 484 authenticator_ = chromeos::LoginUtils::Get()->CreateAuthenticator(this);
483 authenticator_.get()->AuthenticateToLogin( 485 authenticator_.get()->AuthenticateToLogin(
484 g_browser_process->profile_manager()->GetDefaultProfile(), 486 g_browser_process->profile_manager()->GetDefaultProfile(),
485 username, 487 username,
486 password, 488 password,
487 std::string(), 489 std::string(),
488 std::string()); 490 std::string());
489 } 491 }
490 492
491 ~StubLogin() { 493 ~StubLogin() {
492 chromeos::LoginUtils::Get()->DelegateDeleted(this); 494 chromeos::LoginUtils::Get()->DelegateDeleted(this);
493 } 495 }
494 496
495 void OnLoginFailure(const chromeos::LoginFailure& error) { 497 void OnLoginFailure(const chromeos::LoginFailure& error) {
496 LOG(ERROR) << "Login Failure: " << error.GetErrorString(); 498 LOG(ERROR) << "Login Failure: " << error.GetErrorString();
497 delete this; 499 delete this;
498 } 500 }
499 501
500 void OnLoginSuccess(const std::string& username, 502 void OnLoginSuccess(const std::string& username,
501 const std::string& password, 503 const std::string& password,
502 const GaiaAuthConsumer::ClientLoginResult& credentials, 504 const GaiaAuthConsumer::ClientLoginResult& credentials,
503 bool pending_requests, 505 bool pending_requests,
504 bool using_oauth) { 506 bool using_oauth) {
505 // Will call OnProfilePrepared in the end. 507 pending_requests_ = pending_requests;
506 chromeos::LoginUtils::Get()->PrepareProfile(username, 508 if (!profile_prepared_) {
507 password, 509 // Will call OnProfilePrepared in the end.
508 credentials, 510 chromeos::LoginUtils::Get()->PrepareProfile(username,
509 pending_requests, 511 password,
510 using_oauth, 512 credentials,
511 false, 513 pending_requests,
512 this); 514 using_oauth,
515 false,
516 this);
517 } else if (!pending_requests) {
518 delete this;
519 }
513 } 520 }
514 521
515 // LoginUtils::Delegate implementation: 522 // LoginUtils::Delegate implementation:
516 virtual void OnProfilePrepared(Profile* profile) { 523 virtual void OnProfilePrepared(Profile* profile) {
524 profile_prepared_ = true;
517 chromeos::LoginUtils::DoBrowserLaunch(profile, NULL); 525 chromeos::LoginUtils::DoBrowserLaunch(profile, NULL);
518 delete this; 526 if (!pending_requests_)
527 delete this;
519 } 528 }
520 529
521 scoped_refptr<chromeos::Authenticator> authenticator_; 530 scoped_refptr<chromeos::Authenticator> authenticator_;
531 bool pending_requests_;
532 bool profile_prepared_;
522 }; 533 };
523 534
524 void OptionallyRunChromeOSLoginManager(const CommandLine& parsed_command_line, 535 void OptionallyRunChromeOSLoginManager(const CommandLine& parsed_command_line,
525 Profile* profile) { 536 Profile* profile) {
526 if (parsed_command_line.HasSwitch(switches::kLoginManager)) { 537 if (parsed_command_line.HasSwitch(switches::kLoginManager)) {
527 std::string first_screen = 538 std::string first_screen =
528 parsed_command_line.GetSwitchValueASCII(switches::kLoginScreen); 539 parsed_command_line.GetSwitchValueASCII(switches::kLoginScreen);
529 std::string size_arg = 540 std::string size_arg =
530 parsed_command_line.GetSwitchValueASCII( 541 parsed_command_line.GetSwitchValueASCII(
531 switches::kLoginScreenSize); 542 switches::kLoginScreenSize);
(...skipping 1569 matching lines...) Expand 10 before | Expand all | Expand 10 after
2101 if (env->GetVar(chrome::kPreReadEnvironmentVariable, &pre_read) && 2112 if (env->GetVar(chrome::kPreReadEnvironmentVariable, &pre_read) &&
2102 (pre_read == "0" || pre_read == "1")) { 2113 (pre_read == "0" || pre_read == "1")) {
2103 std::string uma_name(name); 2114 std::string uma_name(name);
2104 uma_name += "_PreRead"; 2115 uma_name += "_PreRead";
2105 uma_name += pre_read == "1" ? "Enabled" : "Disabled"; 2116 uma_name += pre_read == "1" ? "Enabled" : "Disabled";
2106 AddPreReadHistogramTime(uma_name.c_str(), time); 2117 AddPreReadHistogramTime(uma_name.c_str(), time);
2107 } 2118 }
2108 #endif 2119 #endif
2109 #endif 2120 #endif
2110 } 2121 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698