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

Side by Side Diff: chrome/browser/chromeos/login/session/user_session_manager.cc

Issue 2808353008: arc: kArcCompatibleFilesystemChosen pref to local state and integer. (Closed)
Patch Set: Created 3 years, 8 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/session/user_session_manager.h" 5 #include "chrome/browser/chromeos/login/session/user_session_manager.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <set> 9 #include <set>
10 #include <string> 10 #include <string>
(...skipping 495 matching lines...) Expand 10 before | Expand all | Expand 10 after
506 CreateUserSession(user_context, has_auth_cookies); 506 CreateUserSession(user_context, has_auth_cookies);
507 507
508 if (!has_active_session) 508 if (!has_active_session)
509 StartCrosSession(); 509 StartCrosSession();
510 510
511 if (!user_context.GetDeviceId().empty()) { 511 if (!user_context.GetDeviceId().empty()) {
512 user_manager::known_user::SetDeviceId(user_context.GetAccountId(), 512 user_manager::known_user::SetDeviceId(user_context.GetAccountId(),
513 user_context.GetDeviceId()); 513 user_context.GetDeviceId());
514 } 514 }
515 515
516 // If the filesystem compatibiliy with ARC is not established yet, test it.
Luis Héctor Chávez 2017/04/13 21:11:47 nit: s/compatibiliy/compatibility/
kinaba 2017/04/14 04:33:55 Acknowledged.
517 int arc_filesystem_compatibility = arc::kFileSystemIncompatible;
Luis Héctor Chávez 2017/04/13 21:11:47 nit: s/int/arc::FileSystemCompatibilityState/
kinaba 2017/04/14 04:33:55 GetIntegerPref needs to take int* so it cannot be
518 user_manager::known_user::GetIntegerPref(
519 user_context_.GetAccountId(), prefs::kArcCompatibleFilesystemChosen,
520 &arc_filesystem_compatibility);
521 if (arc_filesystem_compatibility == arc::kFileSystemIncompatible) {
xiyuan 2017/04/13 16:35:59 What about old devices that are never going to be
Luis Héctor Chávez 2017/04/13 21:11:47 When you move the ownership of the pref to arc_uti
kinaba 2017/04/14 04:33:55 Thanks for the suggestions. Both done (IsArcAvaila
522 base::PostTaskWithTraitsAndReplyWithResult(
523 FROM_HERE,
524 base::TaskTraits()
525 .WithShutdownBehavior(
526 base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN)
527 .WithPriority(base::TaskPriority::USER_BLOCKING)
528 .MayBlock(),
529 base::Bind(&arc::IsArcCompatibleFilesystem,
530 ProfileHelper::GetProfilePathByUserIdHash(
531 user_context_.GetUserIDHash())),
532 base::Bind(&UserSessionManager::SetFileSystemPrefAndPrepareProfile,
533 AsWeakPtr()));
534 return;
535 }
536
516 PrepareProfile(); 537 PrepareProfile();
517 } 538 }
518 539
519 void UserSessionManager::DelegateDeleted(UserSessionManagerDelegate* delegate) { 540 void UserSessionManager::DelegateDeleted(UserSessionManagerDelegate* delegate) {
520 if (delegate_ == delegate) 541 if (delegate_ == delegate)
521 delegate_ = nullptr; 542 delegate_ = nullptr;
522 } 543 }
523 544
524 void UserSessionManager::PerformPostUserLoggedInActions() { 545 void UserSessionManager::PerformPostUserLoggedInActions() {
525 user_manager::UserManager* user_manager = user_manager::UserManager::Get(); 546 user_manager::UserManager* user_manager = user_manager::UserManager::Get();
(...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after
976 } 997 }
977 998
978 void UserSessionManager::StartCrosSession() { 999 void UserSessionManager::StartCrosSession() {
979 BootTimesRecorder* btl = BootTimesRecorder::Get(); 1000 BootTimesRecorder* btl = BootTimesRecorder::Get();
980 btl->AddLoginTimeMarker("StartSession-Start", false); 1001 btl->AddLoginTimeMarker("StartSession-Start", false);
981 DBusThreadManager::Get()->GetSessionManagerClient()->StartSession( 1002 DBusThreadManager::Get()->GetSessionManagerClient()->StartSession(
982 cryptohome::Identification(user_context_.GetAccountId())); 1003 cryptohome::Identification(user_context_.GetAccountId()));
983 btl->AddLoginTimeMarker("StartSession-End", false); 1004 btl->AddLoginTimeMarker("StartSession-End", false);
984 } 1005 }
985 1006
986 void UserSessionManager::PrepareProfile() { 1007 void UserSessionManager::SetFileSystemPrefAndPrepareProfile(
987 const base::FilePath profile_path = 1008 bool arc_compatible_filesystem) {
988 ProfileHelper::GetProfilePathByUserIdHash(user_context_.GetUserIDHash()); 1009 if (arc_compatible_filesystem) {
989 1010 user_manager::known_user::SetIntegerPref(
Luis Héctor Chávez 2017/04/13 21:11:47 Is it possible to centralize the ownership of pref
kinaba 2017/04/14 04:33:55 Done.
990 base::PostTaskWithTraitsAndReplyWithResult( 1011 user_context_.GetAccountId(), prefs::kArcCompatibleFilesystemChosen,
991 FROM_HERE, 1012 arc::kFileSystemCompatible);
992 base::TaskTraits() 1013 }
993 .WithShutdownBehavior( 1014 PrepareProfile();
994 base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN)
995 .WithPriority(base::TaskPriority::USER_BLOCKING)
996 .MayBlock(),
997 base::Bind(&arc::IsArcCompatibleFilesystem, profile_path),
998 base::Bind(&UserSessionManager::PrepareProfileAfterFilesystemCheck,
999 AsWeakPtr()));
1000 } 1015 }
1001 1016
1002 void UserSessionManager::PrepareProfileAfterFilesystemCheck( 1017 void UserSessionManager::PrepareProfile() {
1003 bool arc_compatible_filesystem) {
1004 const bool is_demo_session = 1018 const bool is_demo_session =
1005 DemoAppLauncher::IsDemoAppSession(user_context_.GetAccountId()); 1019 DemoAppLauncher::IsDemoAppSession(user_context_.GetAccountId());
1006 1020
1007 // TODO(nkostylev): Figure out whether demo session is using the right profile 1021 // TODO(nkostylev): Figure out whether demo session is using the right profile
1008 // path or not. See https://codereview.chromium.org/171423009 1022 // path or not. See https://codereview.chromium.org/171423009
1009 g_browser_process->profile_manager()->CreateProfileAsync( 1023 g_browser_process->profile_manager()->CreateProfileAsync(
1010 ProfileHelper::GetProfilePathByUserIdHash(user_context_.GetUserIDHash()), 1024 ProfileHelper::GetProfilePathByUserIdHash(user_context_.GetUserIDHash()),
1011 base::Bind(&UserSessionManager::OnProfileCreated, AsWeakPtr(), 1025 base::Bind(&UserSessionManager::OnProfileCreated, AsWeakPtr(),
1012 user_context_, is_demo_session, arc_compatible_filesystem), 1026 user_context_, is_demo_session),
1013 base::string16(), std::string(), std::string()); 1027 base::string16(), std::string(), std::string());
1014 } 1028 }
1015 1029
1016 void UserSessionManager::OnProfileCreated(const UserContext& user_context, 1030 void UserSessionManager::OnProfileCreated(const UserContext& user_context,
1017 bool is_incognito_profile, 1031 bool is_incognito_profile,
1018 bool arc_compatible_filesystem,
1019 Profile* profile, 1032 Profile* profile,
1020 Profile::CreateStatus status) { 1033 Profile::CreateStatus status) {
1021 CHECK(profile); 1034 CHECK(profile);
1022 1035
1023 switch (status) { 1036 switch (status) {
1024 case Profile::CREATE_STATUS_CREATED: 1037 case Profile::CREATE_STATUS_CREATED:
1025 // Profile created but before initializing extensions and promo resources. 1038 // Profile created but before initializing extensions and promo resources.
1026 InitProfilePreferences(profile, user_context, arc_compatible_filesystem); 1039 InitProfilePreferences(profile, user_context);
1027 break; 1040 break;
1028 case Profile::CREATE_STATUS_INITIALIZED: 1041 case Profile::CREATE_STATUS_INITIALIZED:
1029 // Profile is created, extensions and promo resources are initialized. 1042 // Profile is created, extensions and promo resources are initialized.
1030 // At this point all other Chrome OS services will be notified that it is 1043 // At this point all other Chrome OS services will be notified that it is
1031 // safe to use this profile. 1044 // safe to use this profile.
1032 UserProfileInitialized(profile, is_incognito_profile, 1045 UserProfileInitialized(profile, is_incognito_profile,
1033 user_context.GetAccountId()); 1046 user_context.GetAccountId());
1034 break; 1047 break;
1035 case Profile::CREATE_STATUS_LOCAL_FAIL: 1048 case Profile::CREATE_STATUS_LOCAL_FAIL:
1036 case Profile::CREATE_STATUS_REMOTE_FAIL: 1049 case Profile::CREATE_STATUS_REMOTE_FAIL:
1037 case Profile::CREATE_STATUS_CANCELED: 1050 case Profile::CREATE_STATUS_CANCELED:
1038 case Profile::MAX_CREATE_STATUS: 1051 case Profile::MAX_CREATE_STATUS:
1039 NOTREACHED(); 1052 NOTREACHED();
1040 break; 1053 break;
1041 } 1054 }
1042 } 1055 }
1043 1056
1044 void UserSessionManager::InitProfilePreferences( 1057 void UserSessionManager::InitProfilePreferences(
1045 Profile* profile, 1058 Profile* profile,
1046 const UserContext& user_context, 1059 const UserContext& user_context) {
1047 bool arc_compatible_filesystem) {
1048 profile->GetPrefs()->SetBoolean(prefs::kArcCompatibleFilesystemChosen,
1049 arc_compatible_filesystem);
1050
1051 const user_manager::User* user = 1060 const user_manager::User* user =
1052 ProfileHelper::Get()->GetUserByProfile(profile); 1061 ProfileHelper::Get()->GetUserByProfile(profile);
1053 if (user->GetType() == user_manager::USER_TYPE_KIOSK_APP && 1062 if (user->GetType() == user_manager::USER_TYPE_KIOSK_APP &&
1054 profile->IsNewProfile()) { 1063 profile->IsNewProfile()) {
1055 ChromeUserManager::Get()->SetIsCurrentUserNew(true); 1064 ChromeUserManager::Get()->SetIsCurrentUserNew(true);
1056 } 1065 }
1057 1066
1058 if (user->is_active()) { 1067 if (user->is_active()) {
1059 input_method::InputMethodManager* manager = 1068 input_method::InputMethodManager* manager =
1060 input_method::InputMethodManager::Get(); 1069 input_method::InputMethodManager::Get();
(...skipping 910 matching lines...) Expand 10 before | Expand all | Expand 10 after
1971 ->browser_policy_connector_chromeos() 1980 ->browser_policy_connector_chromeos()
1972 ->IsEnterpriseManaged()) { 1981 ->IsEnterpriseManaged()) {
1973 return false; 1982 return false;
1974 } 1983 }
1975 1984
1976 // Do not show end of life notification if this is a guest session 1985 // Do not show end of life notification if this is a guest session
1977 return !profile->IsGuestSession(); 1986 return !profile->IsGuestSession();
1978 } 1987 }
1979 1988
1980 } // namespace chromeos 1989 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698