| 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/existing_user_controller.h" | 5 #include "chrome/browser/chromeos/login/existing_user_controller.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/message_loop.h" | 8 #include "base/message_loop.h" |
| 9 #include "base/utf_string_conversions.h" | 9 #include "base/utf_string_conversions.h" |
| 10 #include "base/values.h" | 10 #include "base/values.h" |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 43 const char kSettingsSyncLoginURL[] = "chrome://settings/personal"; | 43 const char kSettingsSyncLoginURL[] = "chrome://settings/personal"; |
| 44 | 44 |
| 45 // URL that will be opened on when user logs in first time on the device. | 45 // URL that will be opened on when user logs in first time on the device. |
| 46 const char kGetStartedURL[] = | 46 const char kGetStartedURL[] = |
| 47 "chrome-extension://cbmhffdpiobpchciemffincgahkkljig/index.html"; | 47 "chrome-extension://cbmhffdpiobpchciemffincgahkkljig/index.html"; |
| 48 | 48 |
| 49 // URL for account creation. | 49 // URL for account creation. |
| 50 const char kCreateAccountURL[] = | 50 const char kCreateAccountURL[] = |
| 51 "https://www.google.com/accounts/NewAccount?service=mail"; | 51 "https://www.google.com/accounts/NewAccount?service=mail"; |
| 52 | 52 |
| 53 // Landing URL when launching Guest mode to fix captive portal. |
| 54 const char kCaptivePortalLaunchURL[] = "http://www.google.com/"; |
| 55 |
| 53 // Used to handle the asynchronous response of deleting a cryptohome directory. | 56 // Used to handle the asynchronous response of deleting a cryptohome directory. |
| 54 class RemoveAttempt : public CryptohomeLibrary::Delegate { | 57 class RemoveAttempt : public CryptohomeLibrary::Delegate { |
| 55 public: | 58 public: |
| 56 explicit RemoveAttempt(const std::string& user_email) | 59 explicit RemoveAttempt(const std::string& user_email) |
| 57 : user_email_(user_email) { | 60 : user_email_(user_email) { |
| 58 if (CrosLibrary::Get()->EnsureLoaded()) { | 61 if (CrosLibrary::Get()->EnsureLoaded()) { |
| 59 CrosLibrary::Get()->GetCryptohomeLibrary()->AsyncRemove( | 62 CrosLibrary::Get()->GetCryptohomeLibrary()->AsyncRemove( |
| 60 user_email_, this); | 63 user_email_, this); |
| 61 } | 64 } |
| 62 } | 65 } |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 192 //////////////////////////////////////////////////////////////////////////////// | 195 //////////////////////////////////////////////////////////////////////////////// |
| 193 // ExistingUserController, LoginDisplay::Delegate implementation: | 196 // ExistingUserController, LoginDisplay::Delegate implementation: |
| 194 // | 197 // |
| 195 | 198 |
| 196 void ExistingUserController::CreateAccount() { | 199 void ExistingUserController::CreateAccount() { |
| 197 guest_mode_url_ = | 200 guest_mode_url_ = |
| 198 google_util::AppendGoogleLocaleParam(GURL(kCreateAccountURL)); | 201 google_util::AppendGoogleLocaleParam(GURL(kCreateAccountURL)); |
| 199 LoginAsGuest(); | 202 LoginAsGuest(); |
| 200 } | 203 } |
| 201 | 204 |
| 205 void ExistingUserController::FixCaptivePortal() { |
| 206 guest_mode_url_ = GURL(kCaptivePortalLaunchURL); |
| 207 LoginAsGuest(); |
| 208 } |
| 209 |
| 202 void ExistingUserController::Login(const std::string& username, | 210 void ExistingUserController::Login(const std::string& username, |
| 203 const std::string& password) { | 211 const std::string& password) { |
| 204 if (username.empty() || password.empty()) | 212 if (username.empty() || password.empty()) |
| 205 return; | 213 return; |
| 206 SetStatusAreaEnabled(false); | 214 SetStatusAreaEnabled(false); |
| 207 // Disable clicking on other windows. | 215 // Disable clicking on other windows. |
| 208 login_display_->SetUIEnabled(false); | 216 login_display_->SetUIEnabled(false); |
| 209 | 217 |
| 210 BootTimesLoader::Get()->RecordLoginAttempted(); | 218 BootTimesLoader::Get()->RecordLoginAttempted(); |
| 211 | 219 |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 321 window->SetIsAlwaysOnTop(true); | 329 window->SetIsAlwaysOnTop(true); |
| 322 window->Show(); | 330 window->Show(); |
| 323 } else { | 331 } else { |
| 324 LOG(WARNING) << "No captcha image url was found?"; | 332 LOG(WARNING) << "No captcha image url was found?"; |
| 325 ShowError(IDS_LOGIN_ERROR_AUTHENTICATING, error); | 333 ShowError(IDS_LOGIN_ERROR_AUTHENTICATING, error); |
| 326 } | 334 } |
| 327 } else if (failure.reason() == LoginFailure::NETWORK_AUTH_FAILED && | 335 } else if (failure.reason() == LoginFailure::NETWORK_AUTH_FAILED && |
| 328 failure.error().state() == | 336 failure.error().state() == |
| 329 GoogleServiceAuthError::HOSTED_NOT_ALLOWED) { | 337 GoogleServiceAuthError::HOSTED_NOT_ALLOWED) { |
| 330 ShowError(IDS_LOGIN_ERROR_AUTHENTICATING_HOSTED, error); | 338 ShowError(IDS_LOGIN_ERROR_AUTHENTICATING_HOSTED, error); |
| 339 } else if (failure.reason() == LoginFailure::NETWORK_AUTH_FAILED && |
| 340 failure.error().state() == |
| 341 GoogleServiceAuthError::SERVICE_UNAVAILABLE) { |
| 342 // SERVICE_UNAVAILABLE is generated in 2 cases: |
| 343 // 1. ClientLogin returns ServiceUnavailable code. |
| 344 // 2. Internet connectivity may be behind the captive portal. |
| 345 // Suggesting user to try sign in to a portal in Guest mode. |
| 346 ShowError(IDS_LOGIN_ERROR_CAPTIVE_PORTAL, error); |
| 331 } else { | 347 } else { |
| 332 if (!UserManager::Get()->IsKnownUser(last_login_attempt_username_)) | 348 if (!UserManager::Get()->IsKnownUser(last_login_attempt_username_)) |
| 333 ShowError(IDS_LOGIN_ERROR_AUTHENTICATING_NEW, error); | 349 ShowError(IDS_LOGIN_ERROR_AUTHENTICATING_NEW, error); |
| 334 else | 350 else |
| 335 ShowError(IDS_LOGIN_ERROR_AUTHENTICATING, error); | 351 ShowError(IDS_LOGIN_ERROR_AUTHENTICATING, error); |
| 336 } | 352 } |
| 337 } | 353 } |
| 338 | 354 |
| 339 // Reenable clicking on other windows and status area. | 355 // Reenable clicking on other windows and status area. |
| 340 login_display_->SetUIEnabled(true); | 356 login_display_->SetUIEnabled(true); |
| (...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 522 help_topic_id = login_performer_->login_timed_out() ? | 538 help_topic_id = login_performer_->login_timed_out() ? |
| 523 HelpAppLauncher::HELP_CANT_ACCESS_ACCOUNT_OFFLINE : | 539 HelpAppLauncher::HELP_CANT_ACCESS_ACCOUNT_OFFLINE : |
| 524 HelpAppLauncher::HELP_CANT_ACCESS_ACCOUNT; | 540 HelpAppLauncher::HELP_CANT_ACCESS_ACCOUNT; |
| 525 break; | 541 break; |
| 526 } | 542 } |
| 527 | 543 |
| 528 login_display_->ShowError(error_id, num_login_attempts_, help_topic_id); | 544 login_display_->ShowError(error_id, num_login_attempts_, help_topic_id); |
| 529 } | 545 } |
| 530 | 546 |
| 531 } // namespace chromeos | 547 } // namespace chromeos |
| OLD | NEW |