blob: ce7c261e5d557bbfa4296cd3146a259017304c12 [file] [log] [blame]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/extensions/profile_util.h"
#include "build/chromeos_buildflags.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_manager.h"
#if BUILDFLAG(IS_CHROMEOS)
#include "chrome/browser/ash/profiles/profile_helper.h"
#include "components/user_manager/user.h"
#endif // BUILDFLAG(IS_CHROMEOS)
namespace extensions::profile_util {
bool ProfileCanUseNonComponentExtensions(const Profile* profile) {
#if BUILDFLAG(IS_CHROMEOS)
if (!profile || !ash::ProfileHelper::IsUserProfile(profile)) {
return false;
}
const user_manager::User* user =
ash::ProfileHelper::Get()->GetUserByProfile(profile);
if (!user) {
return false;
}
// ChromeOS has special irregular profiles that must also be filtered
// out in addition to `ProfileHelper::IsUserProfile()`. `IsUserProfile()`
// includes guest and public users (which cannot use non-component
// extensions) so instead only look for those user types that can use them.
switch (user->GetType()) {
case user_manager::UserType::kRegular:
case user_manager::UserType::kChild:
return true;
case user_manager::UserType::kGuest:
case user_manager::UserType::kPublicAccount:
case user_manager::UserType::kKioskChromeApp:
case user_manager::UserType::kKioskWebApp:
case user_manager::UserType::kKioskIWA:
return false;
}
#else
if (!profile) {
return false;
}
return profile->IsRegularProfile();
#endif // BUILDFLAG(IS_CHROMEOS)
}
Profile* GetLastUsedProfile() {
return ProfileManager::GetLastUsedProfile();
}
size_t GetNumberOfProfiles() {
ProfileManager* const manager = GetProfileManager();
return !manager ? 0 : manager->GetNumberOfProfiles();
}
ProfileManager* GetProfileManager() {
return g_browser_process->profile_manager();
}
#if BUILDFLAG(IS_CHROMEOS)
Profile* GetPrimaryUserProfile() {
return ProfileManager::GetPrimaryUserProfile();
}
Profile* GetActiveUserProfile() {
return ProfileManager::GetActiveUserProfile();
}
#endif // BUILDFLAG(IS_CHROMEOS)
} // namespace extensions::profile_util