Index: components/arc/arc_util.cc |
diff --git a/components/arc/arc_util.cc b/components/arc/arc_util.cc |
index 83436fe2d1ed0d612ebe28c4d12a918736550c68..986807fb5022f3976b8429fd77daa8ae926fd878 100644 |
--- a/components/arc/arc_util.cc |
+++ b/components/arc/arc_util.cc |
@@ -145,6 +145,11 @@ bool IsArcKioskMode() { |
user_manager::UserManager::Get()->IsLoggedInAsArcKioskApp(); |
} |
+bool IsPublicSessionMode() { |
+ return user_manager::UserManager::IsInitialized() && |
+ user_manager::UserManager::Get()->IsLoggedInAsPublicAccount(); |
+} |
+ |
bool IsArcAllowedForUser(const user_manager::User* user) { |
if (!user) { |
VLOG(1) << "No ARC for nullptr user."; |
@@ -155,23 +160,18 @@ bool IsArcAllowedForUser(const user_manager::User* user) { |
// - Users have Gaia accounts; |
// - Active directory users; |
// - ARC kiosk session; |
+ // - Public Session users; |
// USER_TYPE_ARC_KIOSK_APP check is compatible with IsArcKioskMode() |
// above because ARC kiosk user is always the primary/active user of a |
- // user session. |
+ // user session. The same for USER_TYPE_PUBLIC_ACCOUNT. |
if (!user->HasGaiaAccount() && !user->IsActiveDirectoryUser() && |
- user->GetType() != user_manager::USER_TYPE_ARC_KIOSK_APP) { |
+ user->GetType() != user_manager::USER_TYPE_ARC_KIOSK_APP && |
+ user->GetType() != user_manager::USER_TYPE_PUBLIC_ACCOUNT) { |
VLOG(1) << "Users without GAIA or AD accounts, or not ARC kiosk apps are " |
"not supported in ARC."; |
return false; |
} |
- // Do not allow for ephemeral data user. cf) b/26402681 |
- if (user_manager::UserManager::Get()->IsUserCryptohomeDataEphemeral( |
- user->GetAccountId())) { |
- VLOG(1) << "Users with ephemeral data are not supported in ARC."; |
- return false; |
- } |
- |
return true; |
} |