Update UserManagerImpl::UserLoggedIn condition.
The condition to check whether or not multi-sign-in is updated. Some assumption that UserManagerImpl has is not explicit assertion with CHECK. This is preparation to switch Fake{,Chrome}UserManager into UserManagerImpl. BUG=278643115 TEST=tryjob Change-Id: I80d47a588dc8dbec1fb93cd27008b0ddaf0e9eee Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6196999 Commit-Queue: Hidehiko Abe <hidehiko@chromium.org> Reviewed-by: Xiyuan Xia <xiyuan@chromium.org> Cr-Commit-Position: refs/heads/main@{#1412459}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
5fa48150ab
commit
f45e2828c4
chrome/browser
ash
file_manager
login
scalable_iph
download
notification
ssl
ui
ash
new_window
web_applications
webui
ash
settings
pages
components/user_manager
@@ -36,6 +36,7 @@
|
|||||||
#include "chromeos/ash/components/browser_context_helper/browser_context_types.h"
|
#include "chromeos/ash/components/browser_context_helper/browser_context_types.h"
|
||||||
#include "components/media_router/browser/test/mock_media_router.h"
|
#include "components/media_router/browser/test/mock_media_router.h"
|
||||||
#include "components/session_manager/core/session_manager.h"
|
#include "components/session_manager/core/session_manager.h"
|
||||||
|
#include "components/user_manager/test_helper.h"
|
||||||
#include "content/public/browser/browser_context.h"
|
#include "content/public/browser/browser_context.h"
|
||||||
#include "content/public/browser/navigation_handle.h"
|
#include "content/public/browser/navigation_handle.h"
|
||||||
#include "content/public/test/browser_test.h"
|
#include "content/public/test/browser_test.h"
|
||||||
@@ -466,14 +467,26 @@ class MultiProfileDriveFileSystemExtensionApiTest
|
|||||||
"false");
|
"false");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SetUpLocalStatePrefService(PrefService* local_state) override {
|
||||||
|
InProcessBrowserTest::SetUpLocalStatePrefService(local_state);
|
||||||
|
|
||||||
|
// Register persisted users.
|
||||||
|
user_manager::TestHelper::RegisterPersistedUser(
|
||||||
|
*local_state,
|
||||||
|
AccountId::FromUserEmailGaiaId("testuser@gmail.com", GaiaId("123456")));
|
||||||
|
user_manager::TestHelper::RegisterPersistedUser(
|
||||||
|
*local_state, AccountId::FromUserEmailGaiaId(kSecondProfileAccount,
|
||||||
|
kSecondProfileGaiaId));
|
||||||
|
}
|
||||||
|
|
||||||
void SetUpOnMainThread() override {
|
void SetUpOnMainThread() override {
|
||||||
|
// Set up the secondary user session.
|
||||||
base::FilePath user_data_directory;
|
base::FilePath user_data_directory;
|
||||||
base::PathService::Get(chrome::DIR_USER_DATA, &user_data_directory);
|
base::PathService::Get(chrome::DIR_USER_DATA, &user_data_directory);
|
||||||
session_manager::SessionManager::Get()->CreateSession(
|
session_manager::SessionManager::Get()->CreateSession(
|
||||||
AccountId::FromUserEmailGaiaId(kSecondProfileAccount,
|
AccountId::FromUserEmailGaiaId(kSecondProfileAccount,
|
||||||
kSecondProfileGaiaId),
|
kSecondProfileGaiaId),
|
||||||
kSecondProfileHash, false);
|
kSecondProfileHash, false);
|
||||||
// Set up the secondary profile.
|
|
||||||
base::FilePath profile_dir = user_data_directory.AppendASCII(
|
base::FilePath profile_dir = user_data_directory.AppendASCII(
|
||||||
ash::BrowserContextHelper::GetUserBrowserContextDirName(
|
ash::BrowserContextHelper::GetUserBrowserContextDirName(
|
||||||
kSecondProfileHash));
|
kSecondProfileHash));
|
||||||
|
@@ -35,6 +35,7 @@
|
|||||||
#include "chromeos/ash/components/login/auth/public/user_context.h"
|
#include "chromeos/ash/components/login/auth/public/user_context.h"
|
||||||
#include "components/account_id/account_id.h"
|
#include "components/account_id/account_id.h"
|
||||||
#include "components/policy/proto/chrome_settings.pb.h"
|
#include "components/policy/proto/chrome_settings.pb.h"
|
||||||
|
#include "components/user_manager/test_helper.h"
|
||||||
#include "components/user_manager/user_names.h"
|
#include "components/user_manager/user_names.h"
|
||||||
#include "content/public/test/browser_test.h"
|
#include "content/public/test/browser_test.h"
|
||||||
#include "testing/gmock/include/gmock/gmock.h"
|
#include "testing/gmock/include/gmock/gmock.h"
|
||||||
@@ -105,6 +106,18 @@ class ShillProfileLoadingTest : public LoginManagerTest {
|
|||||||
~ShillProfileLoadingTest() override = default;
|
~ShillProfileLoadingTest() override = default;
|
||||||
|
|
||||||
// LoginManagerTest:
|
// LoginManagerTest:
|
||||||
|
void SetUpLocalStatePrefService(PrefService* local_state) override {
|
||||||
|
LoginManagerTest::SetUpLocalStatePrefService(local_state);
|
||||||
|
|
||||||
|
// Register a persisted user.
|
||||||
|
user_manager::TestHelper::RegisterPersistedUser(*local_state,
|
||||||
|
unmanaged_user_.account_id);
|
||||||
|
user_manager::TestHelper::RegisterPersistedUser(
|
||||||
|
*local_state, secondary_unmanaged_user_.account_id);
|
||||||
|
user_manager::TestHelper::RegisterPersistedUser(*local_state,
|
||||||
|
managed_user_.account_id);
|
||||||
|
}
|
||||||
|
|
||||||
void SetUpInProcessBrowserTestFixture() override {
|
void SetUpInProcessBrowserTestFixture() override {
|
||||||
LoginManagerTest::SetUpInProcessBrowserTestFixture();
|
LoginManagerTest::SetUpInProcessBrowserTestFixture();
|
||||||
|
|
||||||
|
@@ -48,6 +48,7 @@
|
|||||||
#include "components/prefs/pref_service.h"
|
#include "components/prefs/pref_service.h"
|
||||||
#include "components/user_manager/known_user.h"
|
#include "components/user_manager/known_user.h"
|
||||||
#include "components/user_manager/scoped_user_manager.h"
|
#include "components/user_manager/scoped_user_manager.h"
|
||||||
|
#include "components/user_manager/test_helper.h"
|
||||||
#include "components/user_manager/user.h"
|
#include "components/user_manager/user.h"
|
||||||
#include "components/user_manager/user_manager_impl.h"
|
#include "components/user_manager/user_manager_impl.h"
|
||||||
#include "components/user_manager/user_manager_pref_names.h"
|
#include "components/user_manager/user_manager_pref_names.h"
|
||||||
@@ -514,10 +515,17 @@ TEST_F(UserManagerTest, RemoveUser) {
|
|||||||
false /* browser_restart */,
|
false /* browser_restart */,
|
||||||
false /* is_child */);
|
false /* is_child */);
|
||||||
|
|
||||||
|
// Recreate the user manager to log out all accounts.
|
||||||
|
ResetUserManager();
|
||||||
|
|
||||||
// Create non-owner account and login in.
|
// Create non-owner account and login in.
|
||||||
user_manager_->UserLoggedIn(kAccountId0, kAccountId0.GetUserEmail(),
|
user_manager_->UserLoggedIn(kAccountId0, kAccountId0.GetUserEmail(),
|
||||||
false /* browser_restart */,
|
false /* browser_restart */,
|
||||||
false /* is_child */);
|
false /* is_child */);
|
||||||
|
// Log-in owner account.
|
||||||
|
user_manager_->UserLoggedIn(kOwnerAccountId, kOwnerAccountId.GetUserEmail(),
|
||||||
|
false /* browser_restart */,
|
||||||
|
false /* is_child */);
|
||||||
|
|
||||||
ASSERT_EQ(2U, user_manager_->GetUsers().size());
|
ASSERT_EQ(2U, user_manager_->GetUsers().size());
|
||||||
|
|
||||||
|
@@ -124,6 +124,18 @@ void ScalableIphBrowserTestBase::SetUp() {
|
|||||||
CustomizableTestEnvBrowserTestBase::SetUp();
|
CustomizableTestEnvBrowserTestBase::SetUp();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ScalableIphBrowserTestBase::SetUpInProcessBrowserTestFixture() {
|
||||||
|
CustomizableTestEnvBrowserTestBase::SetUpInProcessBrowserTestFixture();
|
||||||
|
|
||||||
|
if (enable_multi_user_) {
|
||||||
|
// Add a secondary user.
|
||||||
|
LoginManagerMixin* login_manager_mixin = GetLoginManagerMixin();
|
||||||
|
CHECK(login_manager_mixin);
|
||||||
|
login_manager_mixin->AppendRegularUsers(1);
|
||||||
|
CHECK_EQ(login_manager_mixin->users().size(), 2ul);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// `SetUpOnMainThread` is called just before a test body. Do the mock set up in
|
// `SetUpOnMainThread` is called just before a test body. Do the mock set up in
|
||||||
// this function as `browser()` is not available in `SetUp` above.
|
// this function as `browser()` is not available in `SetUp` above.
|
||||||
void ScalableIphBrowserTestBase::SetUpOnMainThread() {
|
void ScalableIphBrowserTestBase::SetUpOnMainThread() {
|
||||||
@@ -150,12 +162,6 @@ void ScalableIphBrowserTestBase::SetUpOnMainThread() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (enable_multi_user_) {
|
if (enable_multi_user_) {
|
||||||
// Add a secondary user.
|
|
||||||
LoginManagerMixin* login_manager_mixin = GetLoginManagerMixin();
|
|
||||||
CHECK(login_manager_mixin);
|
|
||||||
login_manager_mixin->AppendRegularUsers(1);
|
|
||||||
CHECK_EQ(login_manager_mixin->users().size(), 2ul);
|
|
||||||
|
|
||||||
// By default, `MultiUserWindowManager` is created with multi profile off.
|
// By default, `MultiUserWindowManager` is created with multi profile off.
|
||||||
// Re-create for multi profile tests. This has to be done after
|
// Re-create for multi profile tests. This has to be done after
|
||||||
// `SetUpOnMainThread` of a base class as the original multi-profile-off
|
// `SetUpOnMainThread` of a base class as the original multi-profile-off
|
||||||
|
@@ -56,6 +56,7 @@ class ScalableIphBrowserTestBase : public CustomizableTestEnvBrowserTestBase {
|
|||||||
|
|
||||||
// CustomizableTestEnvBrowserTestBase:
|
// CustomizableTestEnvBrowserTestBase:
|
||||||
void SetUp() override;
|
void SetUp() override;
|
||||||
|
void SetUpInProcessBrowserTestFixture() override;
|
||||||
void SetUpOnMainThread() override;
|
void SetUpOnMainThread() override;
|
||||||
void TearDownOnMainThread() override;
|
void TearDownOnMainThread() override;
|
||||||
|
|
||||||
|
@@ -70,19 +70,15 @@
|
|||||||
#if BUILDFLAG(IS_CHROMEOS_ASH)
|
#if BUILDFLAG(IS_CHROMEOS_ASH)
|
||||||
#include "ash/constants/ash_features.h"
|
#include "ash/constants/ash_features.h"
|
||||||
#include "ash/constants/ash_switches.h"
|
#include "ash/constants/ash_switches.h"
|
||||||
|
#include "components/prefs/scoped_user_pref_update.h"
|
||||||
#include "components/user_manager/user_manager.h"
|
#include "components/user_manager/user_manager.h"
|
||||||
|
#include "components/user_manager/user_manager_pref_names.h"
|
||||||
#elif BUILDFLAG(IS_CHROMEOS_LACROS)
|
#elif BUILDFLAG(IS_CHROMEOS_LACROS)
|
||||||
#include "chromeos/startup/browser_init_params.h"
|
#include "chromeos/startup/browser_init_params.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
enum {
|
|
||||||
DUMMY_ACCOUNT_INDEX = 0,
|
|
||||||
PRIMARY_ACCOUNT_INDEX = 1,
|
|
||||||
SECONDARY_ACCOUNT_INDEX_START = 2,
|
|
||||||
};
|
|
||||||
|
|
||||||
#if BUILDFLAG(IS_CHROMEOS_ASH)
|
#if BUILDFLAG(IS_CHROMEOS_ASH)
|
||||||
// Structure to describe an account info.
|
// Structure to describe an account info.
|
||||||
struct TestAccountInfo {
|
struct TestAccountInfo {
|
||||||
@@ -1047,9 +1043,9 @@ class MultiProfileDownloadNotificationTest
|
|||||||
|
|
||||||
// Logs in to a dummy profile.
|
// Logs in to a dummy profile.
|
||||||
command_line->AppendSwitchASCII(ash::switches::kLoginUser,
|
command_line->AppendSwitchASCII(ash::switches::kLoginUser,
|
||||||
kTestAccounts[DUMMY_ACCOUNT_INDEX].email);
|
kTestAccounts[0].email);
|
||||||
command_line->AppendSwitchASCII(ash::switches::kLoginProfile,
|
command_line->AppendSwitchASCII(ash::switches::kLoginProfile,
|
||||||
kTestAccounts[DUMMY_ACCOUNT_INDEX].hash);
|
kTestAccounts[0].hash);
|
||||||
// Don't require policy for our sessions - this is required because
|
// Don't require policy for our sessions - this is required because
|
||||||
// this test creates a secondary profile synchronously, so we need to
|
// this test creates a secondary profile synchronously, so we need to
|
||||||
// let the policy code know not to expect cached policy.
|
// let the policy code know not to expect cached policy.
|
||||||
@@ -1057,24 +1053,24 @@ class MultiProfileDownloadNotificationTest
|
|||||||
"false");
|
"false");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Logs in to the primary profile.
|
void SetUpLocalStatePrefService(PrefService* local_state) override {
|
||||||
void SetUpOnMainThread() override {
|
InProcessBrowserTest::SetUpLocalStatePrefService(local_state);
|
||||||
const TestAccountInfo& info = kTestAccounts[PRIMARY_ACCOUNT_INDEX];
|
|
||||||
|
|
||||||
AddUser(info, true);
|
// Register a persisted user.
|
||||||
DownloadNotificationTestBase::SetUpOnMainThread();
|
ScopedListPrefUpdate prefs_user_update(
|
||||||
|
local_state, user_manager::prefs::kRegularUsersPref);
|
||||||
|
for (const auto& test_account : kTestAccounts) {
|
||||||
|
prefs_user_update->Append(test_account.email);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Loads all users to the current session and sets up necessary fields.
|
// Logs in to the primary profile.
|
||||||
// This is used for preparing all accounts in PRE_ test setup, and for testing
|
void SetUpOnMainThread() override {
|
||||||
// actual login behavior.
|
DownloadNotificationTestBase::SetUpOnMainThread();
|
||||||
void AddAllUsers() {
|
|
||||||
for (size_t i = 0; i < std::size(kTestAccounts); ++i) {
|
// Add all users, except the first one, which is already logged in.
|
||||||
// The primary account was already set up in SetUpOnMainThread, so skip it
|
for (size_t i = 1; i < std::size(kTestAccounts); ++i) {
|
||||||
// here.
|
AddUser(kTestAccounts[i]);
|
||||||
if (i == PRIMARY_ACCOUNT_INDEX)
|
|
||||||
continue;
|
|
||||||
AddUser(kTestAccounts[i], i >= SECONDARY_ACCOUNT_INDEX_START);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1085,12 +1081,11 @@ class MultiProfileDownloadNotificationTest
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Adds a new user for testing to the current session.
|
// Adds a new user for testing to the current session.
|
||||||
void AddUser(const TestAccountInfo& info, bool log_in) {
|
void AddUser(const TestAccountInfo& info) {
|
||||||
if (log_in) {
|
session_manager::SessionManager::Get()->CreateSession(
|
||||||
session_manager::SessionManager::Get()->CreateSession(
|
AccountId::FromUserEmailGaiaId(info.email, GaiaId(info.gaia_id)),
|
||||||
AccountId::FromUserEmailGaiaId(info.email, GaiaId(info.gaia_id)),
|
info.hash, false);
|
||||||
info.hash, false);
|
|
||||||
}
|
|
||||||
user_manager::UserManager::Get()->SaveUserDisplayName(
|
user_manager::UserManager::Get()->SaveUserDisplayName(
|
||||||
AccountId::FromUserEmailGaiaId(info.email, GaiaId(info.gaia_id)),
|
AccountId::FromUserEmailGaiaId(info.email, GaiaId(info.gaia_id)),
|
||||||
base::UTF8ToUTF16(info.display_name));
|
base::UTF8ToUTF16(info.display_name));
|
||||||
@@ -1109,15 +1104,8 @@ class MultiProfileDownloadNotificationTest
|
|||||||
std::unique_ptr<NotificationDisplayServiceTester> display_service2_;
|
std::unique_ptr<NotificationDisplayServiceTester> display_service2_;
|
||||||
};
|
};
|
||||||
|
|
||||||
IN_PROC_BROWSER_TEST_F(MultiProfileDownloadNotificationTest,
|
|
||||||
PRE_DownloadMultipleFiles) {
|
|
||||||
AddAllUsers();
|
|
||||||
}
|
|
||||||
|
|
||||||
IN_PROC_BROWSER_TEST_F(MultiProfileDownloadNotificationTest,
|
IN_PROC_BROWSER_TEST_F(MultiProfileDownloadNotificationTest,
|
||||||
DownloadMultipleFiles) {
|
DownloadMultipleFiles) {
|
||||||
AddAllUsers();
|
|
||||||
|
|
||||||
GURL url(SlowDownloadInterceptor::kUnknownSizeUrl);
|
GURL url(SlowDownloadInterceptor::kUnknownSizeUrl);
|
||||||
|
|
||||||
Profile* profile1 = GetProfileByIndex(1);
|
Profile* profile1 = GetProfileByIndex(1);
|
||||||
|
@@ -224,6 +224,7 @@
|
|||||||
#include "components/policy/core/common/policy_namespace.h"
|
#include "components/policy/core/common/policy_namespace.h"
|
||||||
#include "components/policy/core/common/policy_service.h"
|
#include "components/policy/core/common/policy_service.h"
|
||||||
#include "components/session_manager/core/session_manager.h"
|
#include "components/session_manager/core/session_manager.h"
|
||||||
|
#include "components/user_manager/test_helper.h"
|
||||||
#endif // BUILDFLAG(IS_CHROMEOS_ASH)
|
#endif // BUILDFLAG(IS_CHROMEOS_ASH)
|
||||||
|
|
||||||
using content::WebContents;
|
using content::WebContents;
|
||||||
@@ -5655,6 +5656,13 @@ IN_PROC_BROWSER_TEST_F(SSLUITestNoCert, NewCertificateAuthority) {
|
|||||||
// into their NSS databases.
|
// into their NSS databases.
|
||||||
class SSLUITestCustomCACerts : public SSLUITestNoCert {
|
class SSLUITestCustomCACerts : public SSLUITestNoCert {
|
||||||
public:
|
public:
|
||||||
|
static inline constexpr char kPrimaryUserAccount[] = "test1@test.com";
|
||||||
|
static inline constexpr GaiaId::Literal kPrimaryUserGaiaId{"1234567890"};
|
||||||
|
static inline constexpr char kPrimaryUserHash[] = "test1-hash";
|
||||||
|
static inline constexpr char kSecondaryUserAccount[] = "test2@test.com";
|
||||||
|
static inline constexpr GaiaId::Literal kSecondaryUserGaiaId{"9876543210"};
|
||||||
|
static inline constexpr char kSecondaryUserHash[] = "test2-hash";
|
||||||
|
|
||||||
SSLUITestCustomCACerts() = default;
|
SSLUITestCustomCACerts() = default;
|
||||||
|
|
||||||
SSLUITestCustomCACerts(const SSLUITestCustomCACerts&) = delete;
|
SSLUITestCustomCACerts(const SSLUITestCustomCACerts&) = delete;
|
||||||
@@ -5668,6 +5676,23 @@ class SSLUITestCustomCACerts : public SSLUITestNoCert {
|
|||||||
// code knows not to expect cached policy for the secondary profile.
|
// code knows not to expect cached policy for the secondary profile.
|
||||||
command_line->AppendSwitchASCII(ash::switches::kProfileRequiresPolicy,
|
command_line->AppendSwitchASCII(ash::switches::kProfileRequiresPolicy,
|
||||||
"false");
|
"false");
|
||||||
|
|
||||||
|
command_line->AppendSwitchASCII(ash::switches::kLoginUser,
|
||||||
|
kPrimaryUserAccount);
|
||||||
|
command_line->AppendSwitchASCII(ash::switches::kLoginProfile,
|
||||||
|
kPrimaryUserHash);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetUpLocalStatePrefService(PrefService* local_state) override {
|
||||||
|
SSLUITestNoCert::SetUpLocalStatePrefService(local_state);
|
||||||
|
|
||||||
|
// Register a persisted user.
|
||||||
|
user_manager::TestHelper::RegisterPersistedUser(
|
||||||
|
*local_state, AccountId::FromUserEmailGaiaId(kPrimaryUserAccount,
|
||||||
|
kPrimaryUserGaiaId));
|
||||||
|
user_manager::TestHelper::RegisterPersistedUser(
|
||||||
|
*local_state, AccountId::FromUserEmailGaiaId(kSecondaryUserAccount,
|
||||||
|
kSecondaryUserGaiaId));
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetUpOnMainThread() override {
|
void SetUpOnMainThread() override {
|
||||||
@@ -5677,10 +5702,6 @@ class SSLUITestCustomCACerts : public SSLUITestNoCert {
|
|||||||
|
|
||||||
// Create a second profile.
|
// Create a second profile.
|
||||||
{
|
{
|
||||||
static const char kSecondProfileAccount[] = "profile2@test.com";
|
|
||||||
static const char kSecondProfileGaiaId[] = "9876543210";
|
|
||||||
static const char kSecondProfileHash[] = "testProfile2";
|
|
||||||
|
|
||||||
ON_CALL(policy_for_profile_2_, IsInitializationComplete(testing::_))
|
ON_CALL(policy_for_profile_2_, IsInitializationComplete(testing::_))
|
||||||
.WillByDefault(testing::Return(true));
|
.WillByDefault(testing::Return(true));
|
||||||
ON_CALL(policy_for_profile_2_, IsFirstPolicyLoadComplete(testing::_))
|
ON_CALL(policy_for_profile_2_, IsFirstPolicyLoadComplete(testing::_))
|
||||||
@@ -5691,12 +5712,12 @@ class SSLUITestCustomCACerts : public SSLUITestNoCert {
|
|||||||
base::FilePath user_data_directory;
|
base::FilePath user_data_directory;
|
||||||
base::PathService::Get(chrome::DIR_USER_DATA, &user_data_directory);
|
base::PathService::Get(chrome::DIR_USER_DATA, &user_data_directory);
|
||||||
session_manager::SessionManager::Get()->CreateSession(
|
session_manager::SessionManager::Get()->CreateSession(
|
||||||
AccountId::FromUserEmailGaiaId(kSecondProfileAccount,
|
AccountId::FromUserEmailGaiaId(kSecondaryUserAccount,
|
||||||
GaiaId(kSecondProfileGaiaId)),
|
kSecondaryUserGaiaId),
|
||||||
kSecondProfileHash, false);
|
kSecondaryUserHash, false);
|
||||||
// Set up the secondary profile.
|
// Set up the secondary profile.
|
||||||
base::FilePath profile_dir = user_data_directory.Append(
|
base::FilePath profile_dir = user_data_directory.Append(
|
||||||
ash::ProfileHelper::GetUserProfileDir(kSecondProfileHash).BaseName());
|
ash::ProfileHelper::GetUserProfileDir(kSecondaryUserHash).BaseName());
|
||||||
profile_2_ =
|
profile_2_ =
|
||||||
g_browser_process->profile_manager()->GetProfile(profile_dir);
|
g_browser_process->profile_manager()->GetProfile(profile_dir);
|
||||||
}
|
}
|
||||||
|
@@ -117,8 +117,6 @@ IN_PROC_BROWSER_TEST_F(ChromeNewWindowClientBrowserTest,
|
|||||||
}
|
}
|
||||||
|
|
||||||
IN_PROC_BROWSER_TEST_F(ChromeNewWindowClientBrowserTest, IncognitoDisabled) {
|
IN_PROC_BROWSER_TEST_F(ChromeNewWindowClientBrowserTest, IncognitoDisabled) {
|
||||||
CreateAndStartUserSession(
|
|
||||||
AccountId::FromUserEmailGaiaId(kTestUserName1, GaiaId(kTestUser2GaiaId)));
|
|
||||||
Profile* profile = ProfileManager::GetActiveUserProfile();
|
Profile* profile = ProfileManager::GetActiveUserProfile();
|
||||||
EXPECT_EQ(1u, chrome::GetTotalBrowserCount());
|
EXPECT_EQ(1u, chrome::GetTotalBrowserCount());
|
||||||
|
|
||||||
|
@@ -40,6 +40,7 @@
|
|||||||
#include "chromeos/ash/components/browser_context_helper/browser_context_helper.h"
|
#include "chromeos/ash/components/browser_context_helper/browser_context_helper.h"
|
||||||
#include "components/account_id/account_id.h"
|
#include "components/account_id/account_id.h"
|
||||||
#include "components/session_manager/core/session_manager.h"
|
#include "components/session_manager/core/session_manager.h"
|
||||||
|
#include "components/user_manager/test_helper.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace web_app {
|
namespace web_app {
|
||||||
@@ -128,13 +129,19 @@ class WebAppProfileDeletionBrowserTest : public WebAppBrowserTestBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if BUILDFLAG(IS_CHROMEOS)
|
#if BUILDFLAG(IS_CHROMEOS)
|
||||||
void CreateSession(const AccountId& account_id) {
|
void SetUpLocalStatePrefService(PrefService* local_state) override {
|
||||||
auto* session_manager = session_manager::SessionManager::Get();
|
WebAppBrowserTestBase::SetUpLocalStatePrefService(local_state);
|
||||||
session_manager->CreateSession(account_id, account_id.GetUserEmail(),
|
|
||||||
false);
|
// Register a persisted user.
|
||||||
|
user_manager::TestHelper::RegisterPersistedUser(*local_state,
|
||||||
|
test_account_id_);
|
||||||
}
|
}
|
||||||
|
|
||||||
Profile& StartUserSession(const AccountId& account_id) {
|
Profile& StartUserSession(const AccountId& account_id) {
|
||||||
|
auto* session_manager = session_manager::SessionManager::Get();
|
||||||
|
session_manager->CreateSession(account_id, account_id.GetUserEmail(),
|
||||||
|
false);
|
||||||
|
|
||||||
ProfileManager* profile_manager = g_browser_process->profile_manager();
|
ProfileManager* profile_manager = g_browser_process->profile_manager();
|
||||||
Profile& profile = profiles::testing::CreateProfileSync(
|
Profile& profile = profiles::testing::CreateProfileSync(
|
||||||
profile_manager,
|
profile_manager,
|
||||||
@@ -143,7 +150,6 @@ class WebAppProfileDeletionBrowserTest : public WebAppBrowserTestBase {
|
|||||||
->FindUser(account_id)
|
->FindUser(account_id)
|
||||||
->username_hash()));
|
->username_hash()));
|
||||||
|
|
||||||
auto* session_manager = session_manager::SessionManager::Get();
|
|
||||||
session_manager->NotifyUserProfileLoaded(account_id);
|
session_manager->NotifyUserProfileLoaded(account_id);
|
||||||
session_manager->SessionStarted();
|
session_manager->SessionStarted();
|
||||||
return profile;
|
return profile;
|
||||||
@@ -176,7 +182,6 @@ IN_PROC_BROWSER_TEST_F(WebAppProfileDeletionBrowserTest, OsIntegrationRemoved) {
|
|||||||
/// Create a new profile and install a web app.
|
/// Create a new profile and install a web app.
|
||||||
ProfileManager* profile_manager = g_browser_process->profile_manager();
|
ProfileManager* profile_manager = g_browser_process->profile_manager();
|
||||||
#if BUILDFLAG(IS_CHROMEOS)
|
#if BUILDFLAG(IS_CHROMEOS)
|
||||||
CreateSession(test_account_id_);
|
|
||||||
Profile& profile_to_delete = StartUserSession(test_account_id_);
|
Profile& profile_to_delete = StartUserSession(test_account_id_);
|
||||||
#else
|
#else
|
||||||
base::FilePath profile_path_to_delete =
|
base::FilePath profile_path_to_delete =
|
||||||
@@ -210,7 +215,6 @@ IN_PROC_BROWSER_TEST_F(WebAppProfileDeletionBrowserTest,
|
|||||||
// Create a new profile.
|
// Create a new profile.
|
||||||
ProfileManager* profile_manager = g_browser_process->profile_manager();
|
ProfileManager* profile_manager = g_browser_process->profile_manager();
|
||||||
#if BUILDFLAG(IS_CHROMEOS)
|
#if BUILDFLAG(IS_CHROMEOS)
|
||||||
CreateSession(test_account_id_);
|
|
||||||
Profile& profile_to_delete = StartUserSession(test_account_id_);
|
Profile& profile_to_delete = StartUserSession(test_account_id_);
|
||||||
#else
|
#else
|
||||||
base::FilePath profile_path_to_delete =
|
base::FilePath profile_path_to_delete =
|
||||||
@@ -250,7 +254,6 @@ IN_PROC_BROWSER_TEST_F(WebAppProfileDeletionBrowserTest_WebAppPublisher,
|
|||||||
/// Create a new profile and install a web app.
|
/// Create a new profile and install a web app.
|
||||||
ProfileManager* profile_manager = g_browser_process->profile_manager();
|
ProfileManager* profile_manager = g_browser_process->profile_manager();
|
||||||
#if BUILDFLAG(IS_CHROMEOS)
|
#if BUILDFLAG(IS_CHROMEOS)
|
||||||
CreateSession(test_account_id_);
|
|
||||||
Profile& profile_to_delete = StartUserSession(test_account_id_);
|
Profile& profile_to_delete = StartUserSession(test_account_id_);
|
||||||
#else
|
#else
|
||||||
base::FilePath profile_path_to_delete =
|
base::FilePath profile_path_to_delete =
|
||||||
|
@@ -11,6 +11,7 @@
|
|||||||
|
|
||||||
#include "ash/constants/ash_features.h"
|
#include "ash/constants/ash_features.h"
|
||||||
#include "ash/constants/ash_pref_names.h"
|
#include "ash/constants/ash_pref_names.h"
|
||||||
|
#include "ash/constants/ash_switches.h"
|
||||||
#include "base/containers/adapters.h"
|
#include "base/containers/adapters.h"
|
||||||
#include "chrome/browser/ash/accessibility/accessibility_manager.h"
|
#include "chrome/browser/ash/accessibility/accessibility_manager.h"
|
||||||
#include "chrome/browser/ash/input_method/mock_input_method_engine.h"
|
#include "chrome/browser/ash/input_method/mock_input_method_engine.h"
|
||||||
@@ -24,6 +25,7 @@
|
|||||||
#include "components/language/core/browser/pref_names.h"
|
#include "components/language/core/browser/pref_names.h"
|
||||||
#include "components/language/core/common/locale_util.h"
|
#include "components/language/core/common/locale_util.h"
|
||||||
#include "components/prefs/pref_service.h"
|
#include "components/prefs/pref_service.h"
|
||||||
|
#include "components/user_manager/test_helper.h"
|
||||||
#include "content/public/test/browser_test.h"
|
#include "content/public/test/browser_test.h"
|
||||||
#include "content/public/test/test_web_ui.h"
|
#include "content/public/test/test_web_ui.h"
|
||||||
#include "google_apis/gaia/gaia_id.h"
|
#include "google_apis/gaia/gaia_id.h"
|
||||||
@@ -42,7 +44,8 @@ namespace {
|
|||||||
|
|
||||||
// Use a real domain to avoid policy loading problems.
|
// Use a real domain to avoid policy loading problems.
|
||||||
constexpr char kTestUserName[] = "owner@gmail.com";
|
constexpr char kTestUserName[] = "owner@gmail.com";
|
||||||
constexpr char kTestUserGaiaId[] = "9876543210";
|
constexpr char kTestUserHash[] = "1234567890-hash";
|
||||||
|
constexpr GaiaId::Literal kTestUserGaiaId{"9876543210"};
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
@@ -65,6 +68,20 @@ class AccessibilityHandlerTest : public InProcessBrowserTest {
|
|||||||
void SetUpCommandLine(base::CommandLine* command_line) override {
|
void SetUpCommandLine(base::CommandLine* command_line) override {
|
||||||
scoped_feature_list_.InitWithFeatures(
|
scoped_feature_list_.InitWithFeatures(
|
||||||
{features::kOnDeviceSpeechRecognition}, {});
|
{features::kOnDeviceSpeechRecognition}, {});
|
||||||
|
|
||||||
|
// Use a persisted user.
|
||||||
|
command_line->AppendSwitchASCII(ash::switches::kLoginUser, kTestUserName);
|
||||||
|
command_line->AppendSwitchASCII(ash::switches::kLoginProfile,
|
||||||
|
kTestUserHash);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetUpLocalStatePrefService(PrefService* local_state) override {
|
||||||
|
InProcessBrowserTest::SetUpLocalStatePrefService(local_state);
|
||||||
|
|
||||||
|
// Register a persisted user.
|
||||||
|
user_manager::TestHelper::RegisterPersistedUser(
|
||||||
|
*local_state,
|
||||||
|
AccountId::FromUserEmailGaiaId(kTestUserName, kTestUserGaiaId));
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetUpOnMainThread() override {
|
void SetUpOnMainThread() override {
|
||||||
@@ -140,25 +157,6 @@ class AccessibilityHandlerTest : public InProcessBrowserTest {
|
|||||||
prefs::kAccessibilityDictationLocale, locale);
|
prefs::kAccessibilityDictationLocale, locale);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CreateSession(const AccountId& account_id) {
|
|
||||||
auto* session_manager = session_manager::SessionManager::Get();
|
|
||||||
session_manager->CreateSession(account_id, account_id.GetUserEmail(),
|
|
||||||
false);
|
|
||||||
}
|
|
||||||
|
|
||||||
void StartUserSession(const AccountId& account_id) {
|
|
||||||
profiles::testing::CreateProfileSync(
|
|
||||||
g_browser_process->profile_manager(),
|
|
||||||
BrowserContextHelper::Get()->GetBrowserContextPathByUserIdHash(
|
|
||||||
user_manager::UserManager::Get()
|
|
||||||
->FindUser(account_id)
|
|
||||||
->username_hash()));
|
|
||||||
|
|
||||||
auto* session_manager = session_manager::SessionManager::Get();
|
|
||||||
session_manager->NotifyUserProfileLoaded(account_id);
|
|
||||||
session_manager->SessionStarted();
|
|
||||||
}
|
|
||||||
|
|
||||||
speech::SodaInstaller* soda_installer() {
|
speech::SodaInstaller* soda_installer() {
|
||||||
return speech::SodaInstaller::GetInstance();
|
return speech::SodaInstaller::GetInstance();
|
||||||
}
|
}
|
||||||
@@ -169,9 +167,6 @@ class AccessibilityHandlerTest : public InProcessBrowserTest {
|
|||||||
|
|
||||||
std::unique_ptr<input_method::MockInputMethodEngine> mock_ime_engine_handler_;
|
std::unique_ptr<input_method::MockInputMethodEngine> mock_ime_engine_handler_;
|
||||||
|
|
||||||
const AccountId test_account_id_ =
|
|
||||||
AccountId::FromUserEmailGaiaId(kTestUserName, GaiaId(kTestUserGaiaId));
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::unique_ptr<TestingProfile> profile_;
|
std::unique_ptr<TestingProfile> profile_;
|
||||||
std::unique_ptr<TestAccessibilityHandler> handler_;
|
std::unique_ptr<TestAccessibilityHandler> handler_;
|
||||||
@@ -344,8 +339,6 @@ IN_PROC_BROWSER_TEST_F(AccessibilityHandlerTest,
|
|||||||
}
|
}
|
||||||
|
|
||||||
IN_PROC_BROWSER_TEST_F(AccessibilityHandlerTest, GetStartupSoundEnabled) {
|
IN_PROC_BROWSER_TEST_F(AccessibilityHandlerTest, GetStartupSoundEnabled) {
|
||||||
CreateSession(test_account_id_);
|
|
||||||
StartUserSession(test_account_id_);
|
|
||||||
AccessibilityManager::Get()->SetStartupSoundEnabled(true);
|
AccessibilityManager::Get()->SetStartupSoundEnabled(true);
|
||||||
|
|
||||||
size_t call_data_count_before_call = web_ui()->call_data().size();
|
size_t call_data_count_before_call = web_ui()->call_data().size();
|
||||||
|
@@ -90,6 +90,8 @@ if (is_chromeos) {
|
|||||||
"fake_user_manager.h",
|
"fake_user_manager.h",
|
||||||
"fake_user_manager_delegate.cc",
|
"fake_user_manager_delegate.cc",
|
||||||
"fake_user_manager_delegate.h",
|
"fake_user_manager_delegate.h",
|
||||||
|
"test_helper.cc",
|
||||||
|
"test_helper.h",
|
||||||
]
|
]
|
||||||
|
|
||||||
public_deps = [
|
public_deps = [
|
||||||
@@ -99,7 +101,10 @@ if (is_chromeos) {
|
|||||||
"//components/account_id",
|
"//components/account_id",
|
||||||
]
|
]
|
||||||
|
|
||||||
deps = [ "//chromeos/ash/components/settings" ]
|
deps = [
|
||||||
|
"//chromeos/ash/components/settings",
|
||||||
|
"//components/prefs",
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
source_set("unit_tests") {
|
source_set("unit_tests") {
|
||||||
|
27
components/user_manager/test_helper.cc
Normal file
27
components/user_manager/test_helper.cc
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
// Copyright 2025 The Chromium Authors
|
||||||
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
|
// found in the LICENSE file.
|
||||||
|
|
||||||
|
#include "components/user_manager/test_helper.h"
|
||||||
|
|
||||||
|
#include "components/account_id/account_id.h"
|
||||||
|
#include "components/prefs/scoped_user_pref_update.h"
|
||||||
|
#include "components/user_manager/known_user.h"
|
||||||
|
#include "components/user_manager/user_manager_pref_names.h"
|
||||||
|
|
||||||
|
namespace user_manager {
|
||||||
|
|
||||||
|
// static
|
||||||
|
void TestHelper::RegisterPersistedUser(PrefService& local_state,
|
||||||
|
const AccountId& account_id) {
|
||||||
|
{
|
||||||
|
ScopedListPrefUpdate update(&local_state, prefs::kRegularUsersPref);
|
||||||
|
update->Append(account_id.GetUserEmail());
|
||||||
|
}
|
||||||
|
{
|
||||||
|
KnownUser known_user(&local_state);
|
||||||
|
known_user.UpdateId(account_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace user_manager
|
32
components/user_manager/test_helper.h
Normal file
32
components/user_manager/test_helper.h
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
// Copyright 2025 The Chromium Authors
|
||||||
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
|
// found in the LICENSE file.
|
||||||
|
|
||||||
|
#ifndef COMPONENTS_USER_MANAGER_TEST_HELPER_H_
|
||||||
|
#define COMPONENTS_USER_MANAGER_TEST_HELPER_H_
|
||||||
|
|
||||||
|
class AccountId;
|
||||||
|
class PrefService;
|
||||||
|
|
||||||
|
namespace user_manager {
|
||||||
|
|
||||||
|
// Utilities to set up UserManager related environment.
|
||||||
|
class TestHelper {
|
||||||
|
public:
|
||||||
|
// Records the `account_id` as a persisted user to the given `local_state`.
|
||||||
|
// `local_state` must be properly set up, specifically it needs UserManager
|
||||||
|
// related registration.
|
||||||
|
// In most cases, this registration needs to be done before UserManager
|
||||||
|
// is created. Specifically, for browser_tests, SetUpLocalStatePrefService()
|
||||||
|
// is a recommended function to call this.
|
||||||
|
static void RegisterPersistedUser(PrefService& local_state,
|
||||||
|
const AccountId& account_id);
|
||||||
|
|
||||||
|
private:
|
||||||
|
// Currently, this has only static methods.
|
||||||
|
TestHelper() = delete;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace user_manager
|
||||||
|
|
||||||
|
#endif // COMPONENTS_USER_MANAGER_TEST_HELPER_H_
|
@@ -275,9 +275,13 @@ void UserManagerImpl::UserLoggedIn(const AccountId& account_id,
|
|||||||
|
|
||||||
User* user = FindUserInListAndModify(account_id);
|
User* user = FindUserInListAndModify(account_id);
|
||||||
|
|
||||||
const UserType user_type =
|
if (!logged_in_users_.empty()) {
|
||||||
CalculateUserType(account_id, user, browser_restart, is_child);
|
// Handle multi sign-in case. For multi-sign in, there already should be
|
||||||
if (active_user_ && user) {
|
// active_user_ set, and the user to be logged in should be found
|
||||||
|
// in the persistent user list.
|
||||||
|
CHECK(active_user_);
|
||||||
|
CHECK(user);
|
||||||
|
|
||||||
user->set_is_logged_in(true);
|
user->set_is_logged_in(true);
|
||||||
user->set_username_hash(username_hash);
|
user->set_username_hash(username_hash);
|
||||||
logged_in_users_.push_back(user);
|
logged_in_users_.push_back(user);
|
||||||
@@ -300,7 +304,12 @@ void UserManagerImpl::UserLoggedIn(const AccountId& account_id,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// There are no logged in users. `active_user_` should not be set.
|
||||||
|
CHECK(!active_user_);
|
||||||
|
|
||||||
// Ensure User is there.
|
// Ensure User is there.
|
||||||
|
const UserType user_type =
|
||||||
|
CalculateUserType(account_id, user, browser_restart, is_child);
|
||||||
switch (user_type) {
|
switch (user_type) {
|
||||||
case UserType::kRegular:
|
case UserType::kRegular:
|
||||||
case UserType::kChild:
|
case UserType::kChild:
|
||||||
|
Reference in New Issue
Block a user