Index: components/arc/arc_util.cc |
diff --git a/components/arc/arc_util.cc b/components/arc/arc_util.cc |
index 58133783c34f9ad075aba2bcb54fe94445592a1e..ab3faedc9a8a11b949b0d2b717ddecb9e996da95 100644 |
--- a/components/arc/arc_util.cc |
+++ b/components/arc/arc_util.cc |
@@ -106,6 +106,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."; |
@@ -116,23 +121,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; |
} |