OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <memory> | 7 #include <memory> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
51 #include "chrome/browser/ui/webui/chromeos/login/l10n_util.h" | 51 #include "chrome/browser/ui/webui/chromeos/login/l10n_util.h" |
52 #include "chrome/common/channel_info.h" | 52 #include "chrome/common/channel_info.h" |
53 #include "chrome/common/chrome_switches.h" | 53 #include "chrome/common/chrome_switches.h" |
54 #include "chrome/common/url_constants.h" | 54 #include "chrome/common/url_constants.h" |
55 #include "chrome/grit/generated_resources.h" | 55 #include "chrome/grit/generated_resources.h" |
56 #include "chromeos/chromeos_switches.h" | 56 #include "chromeos/chromeos_switches.h" |
57 #include "chromeos/dbus/dbus_thread_manager.h" | 57 #include "chromeos/dbus/dbus_thread_manager.h" |
58 #include "chromeos/dbus/power_manager_client.h" | 58 #include "chromeos/dbus/power_manager_client.h" |
59 #include "chromeos/dbus/session_manager_client.h" | 59 #include "chromeos/dbus/session_manager_client.h" |
60 #include "chromeos/settings/cros_settings_names.h" | 60 #include "chromeos/settings/cros_settings_names.h" |
61 #include "components/arc/arc_util.h" | |
61 #include "components/google/core/browser/google_util.h" | 62 #include "components/google/core/browser/google_util.h" |
62 #include "components/policy/core/common/cloud/cloud_policy_core.h" | 63 #include "components/policy/core/common/cloud/cloud_policy_core.h" |
63 #include "components/policy/core/common/cloud/cloud_policy_store.h" | 64 #include "components/policy/core/common/cloud/cloud_policy_store.h" |
64 #include "components/policy/core/common/policy_map.h" | 65 #include "components/policy/core/common/policy_map.h" |
65 #include "components/policy/core/common/policy_service.h" | 66 #include "components/policy/core/common/policy_service.h" |
66 #include "components/policy/core/common/policy_types.h" | 67 #include "components/policy/core/common/policy_types.h" |
67 #include "components/policy/policy_constants.h" | 68 #include "components/policy/policy_constants.h" |
68 #include "components/prefs/pref_service.h" | 69 #include "components/prefs/pref_service.h" |
69 #include "components/session_manager/core/session_manager.h" | 70 #include "components/session_manager/core/session_manager.h" |
70 #include "components/signin/core/account_id/account_id.h" | 71 #include "components/signin/core/account_id/account_id.h" |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
170 base::CommandLine::ForCurrentProcess()->HasSwitch( | 171 base::CommandLine::ForCurrentProcess()->HasSwitch( |
171 chromeos::switches::kLoginManager) && | 172 chromeos::switches::kLoginManager) && |
172 !session_manager::SessionManager::Get()->IsSessionStarted(); | 173 !session_manager::SessionManager::Get()->IsSessionStarted(); |
173 } | 174 } |
174 | 175 |
175 void RecordPasswordChangeFlow(LoginPasswordChangeFlow flow) { | 176 void RecordPasswordChangeFlow(LoginPasswordChangeFlow flow) { |
176 UMA_HISTOGRAM_ENUMERATION("Login.PasswordChangeFlow", flow, | 177 UMA_HISTOGRAM_ENUMERATION("Login.PasswordChangeFlow", flow, |
177 LOGIN_PASSWORD_CHANGE_FLOW_COUNT); | 178 LOGIN_PASSWORD_CHANGE_FLOW_COUNT); |
178 } | 179 } |
179 | 180 |
181 bool ShouldForceDircrypto() { | |
182 return base::CommandLine::ForCurrentProcess()->HasSwitch( | |
183 chromeos::switches::kEnableEncryptionMigration) && | |
184 arc::IsArcAvailable(); | |
185 } | |
186 | |
180 } // namespace | 187 } // namespace |
181 | 188 |
182 // static | 189 // static |
183 ExistingUserController* ExistingUserController::current_controller_ = nullptr; | 190 ExistingUserController* ExistingUserController::current_controller_ = nullptr; |
184 | 191 |
185 //////////////////////////////////////////////////////////////////////////////// | 192 //////////////////////////////////////////////////////////////////////////////// |
186 // ExistingUserController, public: | 193 // ExistingUserController, public: |
187 | 194 |
188 ExistingUserController::ExistingUserController(LoginDisplayHost* host) | 195 ExistingUserController::ExistingUserController(LoginDisplayHost* host) |
189 : host_(host), | 196 : host_(host), |
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
454 PerformLoginFinishedActions(false /* don't start auto login timer */); | 461 PerformLoginFinishedActions(false /* don't start auto login timer */); |
455 ShowError(IDS_LOGIN_ERROR_GOOGLE_ACCOUNT_NOT_ALLOWED, | 462 ShowError(IDS_LOGIN_ERROR_GOOGLE_ACCOUNT_NOT_ALLOWED, |
456 "Google accounts are not allowed on this device"); | 463 "Google accounts are not allowed on this device"); |
457 return; | 464 return; |
458 } | 465 } |
459 | 466 |
460 if (gaia::ExtractDomainName(user_context.GetAccountId().GetUserEmail()) == | 467 if (gaia::ExtractDomainName(user_context.GetAccountId().GetUserEmail()) == |
461 user_manager::kSupervisedUserDomain) { | 468 user_manager::kSupervisedUserDomain) { |
462 login_performer_->LoginAsSupervisedUser(user_context); | 469 login_performer_->LoginAsSupervisedUser(user_context); |
463 } else { | 470 } else { |
464 login_performer_->PerformLogin(user_context, auth_mode); | 471 // If a regular user log in to a device which supports ARC, we should make |
465 RecordPasswordLoginEvent(user_context); | 472 // sure that the user's cryptohome is encrypted in ext4 dircrypto to run the |
473 // latest Android runtime. | |
474 UserContext new_user_context = user_context; | |
475 new_user_context.SetIsForcingDircrypto(ShouldForceDircrypto()); | |
476 login_performer_->PerformLogin(new_user_context, auth_mode); | |
477 RecordPasswordLoginEvent(new_user_context); | |
466 } | 478 } |
467 SendAccessibilityAlert( | 479 SendAccessibilityAlert( |
468 l10n_util::GetStringUTF8(IDS_CHROMEOS_ACC_LOGIN_SIGNING_IN)); | 480 l10n_util::GetStringUTF8(IDS_CHROMEOS_ACC_LOGIN_SIGNING_IN)); |
469 } | 481 } |
470 | 482 |
471 void ExistingUserController::MigrateUserData(const std::string& old_password) { | 483 void ExistingUserController::MigrateUserData(const std::string& old_password) { |
472 // LoginPerformer instance has state of the user so it should exist. | 484 // LoginPerformer instance has state of the user so it should exist. |
473 if (login_performer_.get()) { | 485 if (login_performer_.get()) { |
474 VLOG(1) << "Migrate the existing cryptohome to new password."; | 486 VLOG(1) << "Migrate the existing cryptohome to new password."; |
475 login_performer_->RecoverEncryptedData(old_password); | 487 login_performer_->RecoverEncryptedData(old_password); |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
600 | 612 |
601 void ExistingUserController::ShowEncryptionMigrationScreen( | 613 void ExistingUserController::ShowEncryptionMigrationScreen( |
602 const UserContext& user_context) { | 614 const UserContext& user_context) { |
603 host_->StartWizard(OobeScreen::SCREEN_ENCRYPTION_MIGRATION); | 615 host_->StartWizard(OobeScreen::SCREEN_ENCRYPTION_MIGRATION); |
604 | 616 |
605 EncryptionMigrationScreen* migration_screen = | 617 EncryptionMigrationScreen* migration_screen = |
606 static_cast<EncryptionMigrationScreen*>( | 618 static_cast<EncryptionMigrationScreen*>( |
607 host_->GetWizardController()->current_screen()); | 619 host_->GetWizardController()->current_screen()); |
608 DCHECK(migration_screen); | 620 DCHECK(migration_screen); |
609 migration_screen->SetUserContext(user_context); | 621 migration_screen->SetUserContext(user_context); |
622 migration_screen->SetLoginPerformer(login_performer_.get()); | |
fukino
2017/04/05 15:59:56
I'm not sure if we can keep adding state to the mi
xiyuan
2017/04/05 21:15:11
I am fine with adding new state. But let's not pas
fukino
2017/04/06 14:22:16
Done.
I updated it to pass the callback to screen
| |
610 } | 623 } |
611 | 624 |
612 void ExistingUserController::ShowTPMError() { | 625 void ExistingUserController::ShowTPMError() { |
613 login_display_->SetUIEnabled(false); | 626 login_display_->SetUIEnabled(false); |
614 login_display_->ShowErrorScreen(LoginDisplay::TPM_ERROR); | 627 login_display_->ShowErrorScreen(LoginDisplay::TPM_ERROR); |
615 } | 628 } |
616 | 629 |
617 void ExistingUserController::ShowPasswordChangedDialog() { | 630 void ExistingUserController::ShowPasswordChangedDialog() { |
618 RecordPasswordChangeFlow(LOGIN_PASSWORD_CHANGE_FLOW_PASSWORD_CHANGED); | 631 RecordPasswordChangeFlow(LOGIN_PASSWORD_CHANGE_FLOW_PASSWORD_CHANGED); |
619 | 632 |
(...skipping 790 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1410 login_display_->ShowUnrecoverableCrypthomeErrorDialog(); | 1423 login_display_->ShowUnrecoverableCrypthomeErrorDialog(); |
1411 } | 1424 } |
1412 | 1425 |
1413 void ExistingUserController::ClearRecordedNames() { | 1426 void ExistingUserController::ClearRecordedNames() { |
1414 display_email_.clear(); | 1427 display_email_.clear(); |
1415 display_name_.clear(); | 1428 display_name_.clear(); |
1416 given_name_.clear(); | 1429 given_name_.clear(); |
1417 } | 1430 } |
1418 | 1431 |
1419 } // namespace chromeos | 1432 } // namespace chromeos |
OLD | NEW |