0
Commit Graph

611 Commits

Author SHA1 Message Date
8f4d03acf9 Use pointer for the TestHelper argument.
In the style guide, it is recommended to use pointer for the parameter
if the referred instance needs to outlive the function call.
https://google.github.io/styleguide/cppguide.html#Inputs_and_Outputs

BUG=278643115
TEST=Tryjob

Change-Id: I6eeb48627569a140f184a9e017741581f898f07f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6406833
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Reviewed-by: Jun Ishiguro <junis@google.com>
Commit-Queue: Jun Ishiguro <junis@google.com>
Auto-Submit: Hidehiko Abe <hidehiko@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1439212}
2025-03-27 21:38:23 -07:00
3067d3b1ad ash: Fix kiosk launch crash with misconfigured user
The crash happens when the previous kiosk launch fails at
cryptohome mount stage. That would leave the kiosk user as
misconfigured and will be removed on the next chrome run.
However, kiosk users are only added when loading user list.
Once removed, the user type could not be determined correctly.
The code would fallback to regular user login code path and
crash. The CL skips removing kiosk users from user list even
if they are in marked as misconfigured.

Bug: 403354377
Change-Id: I7c19228c53d6685a34abaa4c3a88e81636b9cf06
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6357166
Reviewed-by: Edman Anjos <edman@chromium.org>
Reviewed-by: Hidehiko Abe <hidehiko@chromium.org>
Commit-Queue: Xiyuan Xia <xiyuan@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1435088}
2025-03-19 14:13:44 -07:00
3cf7c876cd Remove unused params from UserManager::UserLoggedIn.
Also, some calls of UserManager::UserLoggedIn pass User::username_hash().
However, in production, UserLoggedIn sets the value to
User::username_hash so it was wrong. This CL fixes them, in most cases,
by using user_manager::TestHelper::GetFakeUsernameHash().

BUG=278643115
TEST=Tryjob

Change-Id: Id03ea14853c9b063c5fe6a72d8650ab2ba8bf4ba
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6357613
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Reviewed-by: Steven Bennetts <stevenjb@chromium.org>
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1433652}
2025-03-17 11:14:09 -07:00
74179f0b56 Remove UserManager stacking from browser_tests part 13/n
This fixes the unexpected usage of UserManager in
InlineLoginHandlerTest.

BUG=396238168
TEST=Tryjob

Change-Id: I9e81447f87789e583d880675b2ee6c6d1094155b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6322170
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1428054}
2025-03-04 16:45:26 -08:00
7f8437911c Remove UserManager stacking from browser_tests part 12/n
This fixes the unexpected usage of UserManager in
GetAuthTokenFunction*Tests.

BUG=396238168
TEST=Tryjob

Change-Id: Iea20b1487d43b33367f3f4dd14bcfd70f8360fef
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6317787
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1427764}
2025-03-04 09:07:35 -08:00
c4feea2a69 Remove UserManager stacking from browser_tests part 5/n
This fixes the unexpected usage of UserManager in
ArcAuthServiceTest.

BUG=396238168
TEST=Tryjob

Change-Id: I5ab2fb71aca8e05e256990ed71f68f2a2a847a87
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6275148
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1421782}
2025-02-18 21:36:03 -08:00
6c65f01534 Remove UserManager stacking from browser_tests part 6/n
This fixes the unexpected usage of UserManager in
ArcRobotAuthCodeFetcherBrowserTest.

BUG=396238168
TEST=Tryjob

Change-Id: I043f912a64ecac163a2faa2ba04c7f1f852bccb2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6275856
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1421768}
2025-02-18 20:15:36 -08:00
38a5272904 Remove UserManager stacking from browser_tests part 4/n
This fixes the unexpected usage of UserManager in
SystemLogKioskSessionApitest.

This also fixes the behavior of kPreventKioskAutolaunchForTesting
to make it usable for the fixed test.

BUG=396238168
TEST=Tryjob

Change-Id: I684992f9937f8cd83c7b8672781444d182184a6e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6262087
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Reviewed-by: Jeroen Dhollander <jeroendh@google.com>
Cr-Commit-Position: refs/heads/main@{#1421106}
2025-02-17 09:37:20 -08:00
721b7696f7 Remove ACTIVE_DIRECTORY type from account_id.h
Remove ACTIVE_DIRECTORY from the AccountType enum in
components/account_id/account_id.h. Along with that, remove the object
guid attribute of AccountId, which was only set for Active Directory
accounts. Also update the files where these enum value and ID attribute
were still used.

Additionally, update components/user_manager/known_user.cc, removing
preferences keys that where only used for Active Directory accounts.
These preferences are now part of the kObsoleteKeys list.

This is a follow up to the following CL, in which we removed the
kActiveDirectory type from account.h:
https://chromium-review.googlesource.com/c/chromium/src/+/6226680

Bug: 291783005
Change-Id: Iee3a6d8f30a99f21d1f5cbc22952f89ed35e9663
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6254399
Reviewed-by: Hidehiko Abe <hidehiko@chromium.org>
Reviewed-by: Renato Silva <rrsilva@google.com>
Commit-Queue: Felipe Andrade <fsandrade@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1420449}
2025-02-14 05:30:59 -08:00
bc6af0e744 Introduce SessionManager::SwitchActiveSession.
And production code starts to call it instead of
UserManager::SwitchActiveUser.
Tests are still calling UserManager::SwitchActiveUser directly,
which will be removed in later CLs.

BUG=278643115
TEST=Tryjob

Change-Id: I7ddc6f566c5634dcc96ffbc69e6997dfd95d51d0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6242976
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1417425}
2025-02-07 09:59:36 -08:00
48a9935d6d Migrate GetFakeUsernameHash into TestHelper.
Re-implement GetFakeUsernameHash in TestHelper using UserDataAuthClient
APIs. Then, FakeUserManager::GetFakeUsernameHash is migrated it into
the new one.

Now, FakeUserManager and FakeChromeUserManager are deprecated.
In new code, we expect UserManagerImpl is used.

BUG=278643115
TEST=Tryjob

Change-Id: Id89b680c1f8d9cfee7f276ca546b6563c0d6dfd9
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6242113
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1417399}
2025-02-07 09:29:29 -08:00
d5f6403f66 Move user creation from session creation.
Currently, if missing and some condition meets, a User instance is
created in UserManager::UserLoggedIn called from
SessionManager::CreateSession. This approach is difficult to write
proper test, because the expecting condition is too complex.

This CL moves that part to the callers of CreateSession family.
Now, UserLoggedIn handles log-in. Callers now have responsibility
to register User before creating the session.

In the production, no behavior change is expected.
In the tests, the behavior of UserManager is now much aligned
with fake implementation.

BUG=278643115
TEST=Tryjob

Change-Id: Ia746f845a6967288ff5626f5507b9da71c5d8487
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6239080
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1417065}
2025-02-06 15:38:34 -08:00
6ca07bfe76 Use user_storage_ for FindUser and FindUserAndModify.
The intention of the method is to return a User instance
regardless of whether it is persisted or ephemeral.

The original code looked at active_user_, which was the only
possibility that ephemeral user is being pointed.
This worked, because the ephemeral user creation is done
as a part of UserLoggedIn, and so created user is being
pointed soon by active_user_.

Now, we're moving EnsureUser out from UserLoggedIn,
and so there will be some timing that is observable
from outside of UserManager.
The new approach can prevent the edge case.

BUG=278643115
TEST=Tryjob

Change-Id: I8d59ea90d8d3ff6606dd58253c3b18a4cedb37e0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6234333
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1416268}
2025-02-05 10:05:18 -08:00
698b57cd9d Remove is_current_user_ephemeral_regular_users_.
The condition can be inferred by looking at whether the user
is in the persisted user list.
The key in this CL is to remove one "current" concept as preparation
to move the caller of the function out from UserManager::UserLoggedIn.

BUG=278643115
TEST=Tryjob

Change-Id: Ib29742c2e22eefe8d17c476422ebd21dcfc45d34
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6232326
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1416250}
2025-02-05 09:36:45 -08:00
c05b05ee44 Rename UserManager::users to persisted users.
To reflect what it is.

BUG=278643115
TEST=Tryjob

Change-Id: I0c0ba43a2d9209f08157c0248151bc2079b2ef69
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6229548
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1415957}
2025-02-04 18:05:44 -08:00
ea4742f221 Move pending_user_switch to SessionManager.
Moving session management out from UserManager for better
grouping of code structure.
Preparation to remove UserManager::SwitchActiveUser() family.

BUG=278643115
TEST=Tryjob

Change-Id: Iab2104027b4426642b5f053b858701bd61bc3f19
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6218325
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1415754}
2025-02-04 12:15:56 -08:00
27eb9adcd5 Extract user ensuring part from UserManagerImpl::UserLoggedIn.
This is preparation to have clear responsibility between the
UserManager/SessionManager.

BUG=278643115
TEST=Tryjob

Change-Id: I11a9101eae81024b626fff2d3b92276514e0e5e4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6218320
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1415618}
2025-02-04 09:20:19 -08:00
7cb03ed85f Introduce user_manager::TestHelper::AddKioskAppUser()
And migrate functions for adding kiosk user to there.

BUG=278643115
TEST=Tryjob

Change-Id: Ib6f0de74ba6417cee7a416fa20eb400d0591d18c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6217222
Reviewed-by: Lei Zhang <thestig@chromium.org>
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Reviewed-by: Alexei Svitkine <asvitkine@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1414185}
2025-01-31 09:16:10 -08:00
4b56bbaf89 Remove misc. instances of base::ranges from the past day.
Bug: 386918226
Change-Id: Ic59028e577ab14aa9de4c9e95b3d115a78fb375a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6213050
Reviewed-by: Lei Zhang <thestig@chromium.org>
Owners-Override: Lei Zhang <thestig@chromium.org>
Auto-Submit: Peter Kasting <pkasting@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1412965}
2025-01-29 09:02:26 -08:00
cd66358d51 Set is_managed/is_affiliated for device local accounts.
BUG=278643115
TEST=Tryjob

Change-Id: I5444c6fdedd8eba533f3dcc2b49ff0259d85d8a3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6197782
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1412960}
2025-01-29 08:54:42 -08:00
4846ca4f0f Introduce User::is_managed.
User::is_managed indicates whether the User is a managed one.
The value is updated along with policy.
This is preparation to reduce the dependency to Profile in ash-chrome.

BUG=None
TEST=Tryjob

Change-Id: I389f80abe163a3abe9bb7c880c348a12e1a6fc42
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6189013
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Reviewed-by: Denis Kuznetsov <antrim@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1412959}
2025-01-29 08:54:29 -08:00
76274b5fed Refactor UserManagerImpl::UserLoggedIn by grouping operations.
UserManagerImpl::UserLoggedIn handles multiple tasks and so
complex. This CL groups some of the operations, and extract them
into named methods representing what is the responsibility for each.

Now, the method is (roughly) categorized into 6 tasks.
1. (for primary user log-in) ensure User* instance is there.
   This is not yet extracted into a method.
2. Handling to update User's state for login, regardless of
   primary user log-in or multi-user sign-in cases.
3. Handling Primary user log-in specific tasks.
4. Handling Multi-user sign-in specific tasks.
   This is not yet extracted into a method.
5. Switching the active user.
6. Notify necessary observers.

Then, now 2 and 5 are properly shared.

BUG=278643115
TEST=tryjob

Change-Id: I0b5912ef04d706c1f818a7ab43b4f1b5e5809e7d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6207228
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1412674}
2025-01-28 18:12:38 -08:00
2d7f11d138 Remove test-only code in UserManagerImpl::UserLoggedIn.
The case shouldn't happen in the production.
CHECK the condition, instead, and fix test cases.

BUG=278643115
TEST=tryjob

Change-Id: Ibb7a3654b133ab9d690275ba52a4b62c88faa86e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6206566
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1412460}
2025-01-28 11:49:43 -08:00
f45e2828c4 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}
2025-01-28 11:49:18 -08:00
0695689d2b Avoid unnecessary GaiaId casts in tests under components/user_manager
This is achieved by adopting the test-only class GaiaId::Literal, which
allows constexpr instances for constants that represent Gaia IDs. This
also reduces the risk for bugs in tests or nonrealistic setups, as it is
hard to use strings other than Gaia IDs (such as e-mails) as gaia IDs,
and the other way round (use Gaia IDs accidentally to represent
something else).

This CL was uploaded by git cl split.

R=hidehiko@chromium.org

Bug: 380416867
Change-Id: Ie9d590a0623f0e4d29fda50a34309fbba1a319f5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6207553
Auto-Submit: Mikel Astiz <mastiz@chromium.org>
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Reviewed-by: Hidehiko Abe <hidehiko@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1412409}
2025-01-28 10:33:59 -08:00
ccea09835f [cleanup] Replace base::ranges with std::ranges: components/
Done entirely with `git grep` and `sed` + `git cl format`, no
hand-editing.

Bug: 386918226
Change-Id: I7377af2f9c3758c68a249b421d98bd3fd5c2c1fd
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6201377
Auto-Submit: Peter Kasting <pkasting@chromium.org>
Reviewed-by: Ted Choc <tedchoc@chromium.org>
Commit-Queue: Peter Kasting <pkasting@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1411730}
2025-01-27 10:38:22 -08:00
2d610a63d0 [oobe] Store user's preferred locale in User
Bug: 330384267
Change-Id: I9ebf33551ae9b976f50c798123a5b6221a5b33c0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6196963
Reviewed-by: Bohdan Tyshchenko <bohdanty@google.com>
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Commit-Queue: Danila Kuzmin <dkuzmin@google.com>
Cr-Commit-Position: refs/heads/main@{#1411552}
2025-01-27 03:27:24 -08:00
52babdaf9b demomode: Allowlist demo account user
We should not allow any non-demo-account user to login into demo mode.
Demo account is created right before login. In this case, allowlist this
user in setting.

Bug: 364195755
Change-Id: Icf61c3d577580deab3ebf7614ae94f651f1ad13d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6149347
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Commit-Queue: Xiqi Ruan <xiqiruan@chromium.org>
Reviewed-by: Denis Kuznetsov <antrim@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1410485}
2025-01-23 11:35:47 -08:00
6e51bc2fe1 Remove FakeUserManager::LogoutAllUsers.
The API is used only to setting up one test fixture.
Remove the API and fix test fixture.

BUG=278643115
TEST=Tryjob

Change-Id: Ia9d1dcef2e3ae64aad85eb4ecaf1397204adb8df
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6188350
Reviewed-by: Toni Barzic <tbarzic@google.com>
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1409803}
2025-01-22 10:48:09 -08:00
056f0b5f59 Migrate ephemeral related APIs in FakeUserManager into real ones
This CL migrates all ephemeral related APIs into real ones.
All use cases in tests are also migrated.

BUG=278643115
TEST=Tryjob

Change-Id: I80b70bf3800e7ed7daf944e6e8356a36fc49922e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6169851
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1409435}
2025-01-21 18:52:01 -08:00
e8c210a176 Remove FakeUserManager::AddUser{,WithAffiliation}.
And, migrate remaining uses into the real one.

BUG=278643115
TEST=Tryjob

Change-Id: I5ce56f01bacf37e6f948aba1212b7fc957c51986
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6172012
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1406807}
2025-01-15 09:59:04 -08:00
2ff9c2de52 Migrate more methods in FakeUserManager to the real one.
To keep the fake behavior closer to the real one.
User{,Non}CryptohomeDataEphemeral related ones will be done
in following CLs.

BUG=278643115
TEST=Tryjob

Change-Id: I542c2469d95c8f4275433e928eab0daec5e70a87
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6171751
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1405836}
2025-01-13 17:04:32 -08:00
f3c949e8f8 Migrate FakeUserManager::AddUserWithAffiliation to real impl.
BUG=278643115
TEST=Tryjob

Change-Id: I73f46ca7fb381def60b504ab028befc363b1793f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6166469
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1405305}
2025-01-12 10:56:57 -08:00
7ef706bfff Move UserManagerImpl::Register.*Prefs to UserManager.
as public APIs, so callers won't need to touch UserManagerImpl
directly, including tests.
Actual callers will be migrated in later CLs.

BUG=278643115
TEST=Tryjob

Change-Id: I2c0d8922f533f6832101d800feedeb418a466d6c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6163947
Reviewed-by: Reilly Grant <reillyg@chromium.org>
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1405296}
2025-01-12 08:36:52 -08:00
8f8b80afa3 Migrate FakeUserManager::Is* family to the real impl.
Except IsUser{,Non}CryptohomeDataEphemeral(), which have
fake logic, so will be migrated separately.

BUG=278643115
TEST=Tryjob

Change-Id: If60fbecb2afe782c72d7e24146821d71f3870791
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6166904
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1405292}
2025-01-12 08:05:51 -08:00
c34357a60b Migrate FakeUserManager::AddChildUser and AddGuestUser to real impl
BUG=278643115
TEST=Tryjob

Change-Id: Ic70a5a8b5f9b6af8068fa6b0b3eae039d7291616
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6161285
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1404222}
2025-01-09 08:48:18 -08:00
131474ea83 Deprecated FakeUserManager::Add*User and expose UserManagerImpl's ones
To make fake behavior more consistent to the actual behavior.
We can replace callers in later CLs.

AddPublicAccountUser is migrated by this CL, because of the conflict
of existing API and UserManagerImpl's APi.

BUG=278643115
TEST=Tryjob

Change-Id: Ieb80af654286c53c48e712666fa78a1e53ba308e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6159104
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1403890}
2025-01-08 15:27:16 -08:00
7756a72eb0 Consolidate UserManagerImpl::XxxUserLoggedIn methods.
By inlining the code, now UserManagerImpl::UserLoggedIn has three
major blocks;
1) handling multi-user sign in
2) ensure User instance for the login.
3) actual login procedure for the primary user.

This is preparation to move the login flow code to SessionManager,
and also to share the code with fake classes.

BUG=278643115
TEST=Tryjob

Change-Id: I41d53b5de7468a74f792a00621e73b51a35338e6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6155998
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1403577}
2025-01-08 08:19:52 -08:00
27c7fe6e7a Extract AddXxxUser* family in UserManagerImpl.
This is preparation to split UserLoggedIn into three blocks;
1) handling multi-user sign-in. This is expected to be moved
  into SessionManager later.
2) Ensuring User instance for the given AccountId.
  Later, we'd like to share the logic with FakeUserManager.
3) Actual log-in process. This is also expected to be moved
  into SessionManager later.

BUG=278643115
TEST=Tryjob

Change-Id: I543342283a8cf8c5a4dabf640e634aacb54f1bd3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6149398
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1403076}
2025-01-07 09:59:12 -08:00
4b53d47305 Migrate Owner related APIs in FakeUserManager into the real impl
To exercise the actual behavior in more tests.

BUG=278643115
TEST=Tryjob

Change-Id: I7285cfaec7ea85514c6224e9ccaf8aedff67527d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6148849
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1403027}
2025-01-07 08:49:23 -08:00
46e5d6b5d0 Remove active_account_id_ from FakeUserManager.
It's not used, so removed.
Then, GetActiveUser() becomes same as its parent's implementation,
so removed the overriding.

Bug: 278643115
Test: Tryjob
Change-Id: I97c4be7b0f51431b4d24b22fa7c4f202977b2e8e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5934123
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1402476}
2025-01-06 09:59:42 -08:00
60849c7ebd Refactor UserManager::*LoggedIn* to split adding user and login
This refactors UserManager::*LoggedIn* family. Each function is now
consisted from two blocks; 1) ensuring User is created, and 2)
actual log-in operation.

This is preparation to extract 1) from UserLoggedIn(), then to share
with fake implementation for tests in later CLs.

BUG=278643115
TEST=Tryjob

Change-Id: I6a3516ae3db30f687c854e3686740c813473f9e4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6109415
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1398637}
2024-12-19 09:17:24 -08:00
0ff51bd4b2 Move stub image initialization to User's ctor.
Currently it is set as a part of user log-in, but it should make
more sense to set it up on user creation.
Historically, it was done so, but with code change histories
the timing gets diverged. This CL restores it for simplicity.

BUG=278643115
TEST=Tryjob

Change-Id: I06910831e60ed1e88e07111b61b0fa64969b431e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6109996
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Reviewed-by: Denis Kuznetsov <antrim@chromium.org>
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1398635}
2024-12-19 09:16:12 -08:00
764f01d25d Remove IS_CHROMEOS_ASH from //components/*
This cleans up the following subdirectories: sessions,
soda, storage_monitor, supervised_user, sync_preferences,
system_media_controls, translate, trusted_vault,
unified_consent, update_client, user_manager,
vector_icons, version_ui, web_resource

1) Removed IS_CHROMEOS_LACROS usages and code it guarded
2) Renamed IS_CHROMEOS_ASH to IS_CHROMEOS
3) Removed chromeos_buildflags.h includes
4) Cleaned up *.gn files from IS_CHROMEOS_*.

Bug: 375523816, 373972275, 373971535
Change-Id: I973920d2078526bede68a84dbea53029d202c22d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6097194
Reviewed-by: Georg Neis <neis@chromium.org>
Reviewed-by: Nico Weber <thakis@chromium.org>
Commit-Queue: Maksim Sisov <msisov@igalia.com>
Reviewed-by: Hidehiko Abe <hidehiko@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1397771}
2024-12-18 00:34:42 -08:00
47a51a3398 demo_mode: Remove any demo users in previous sessions
Due to performance issue for ephemeral sessions, we may login demo
account user as non-ephemeral users (config through policy). Remove
these users on login screen before next demo account login.

Bug: 383220622
Change-Id: Ie3e43952982277e491cc5400b798df3b3d2a1370
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6081861
Commit-Queue: Xiqi Ruan <xiqiruan@chromium.org>
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1394534}
2024-12-10 22:26:29 +00:00
8c0aceb918 [ash] Adopt class GaiaId for improved type safety under //components
The class replaces std::string to avoid bugs when dealing with
obfuscated gaia IDs. The class wraps an std::string and is in most cases
a drop-in replacement.

This patch tackles changes under //components.

One of the classes affected is AccountId, under
//components/account_id. This class combines gaia IDs with other
kinds of IDs (with ongoing deprecations and code cleanups for
Active Directory) and needed a bit of additional refactoring to
improve type safety for Gaia IDs (AccountType::GOOGLE) specifically.

This CL was uploaded by git cl split.

R=hidehiko@chromium.org, osamafathy@google.com

Bug: 380416867
Change-Id: I01a052c455601274c0a514ce852a63399aeb0f5e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6062319
Reviewed-by: Hidehiko Abe <hidehiko@chromium.org>
Reviewed-by: Felipe Andrade <fsandrade@chromium.org>
Commit-Queue: Mikel Astiz <mastiz@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1391672}
2024-12-04 15:34:28 +00:00
e0cec6a021 Remove const from return value of FakeUserManager::Add*User family.
For consistency with FakeChromeUserManager, FakeUserManager::Add*User
family return non-const modified User*.

BUG=278643115
TEST=Tryjob

Change-Id: Iff840fcc565167e55a8aea10478a8e45bb0b074a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6054919
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1388970}
2024-11-27 18:55:18 +00:00
02ff267bab Move User::UpdateType to private.
With renaming to SetType following surrounding APIs.
This is only public and effectively mutable API in User class,
which can break the overall user management consistency.
Similar to other methods in User, now the API is hidden in private
section, so can be called only by allow-listed classes.

Remaining public non-const APIs are to take mutable Profile prefs
and observer registration, so now using mutable User instance
outside of core of UserManager related classes can be safer.

Also, now there is no class inheriting User, so merge protected
section into the private.

BUG=278643115
TEST=Tryjob

Change-Id: I9e742285894424243e1a32847935cfb37ba39281
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6054818
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1388961}
2024-11-27 18:45:38 +00:00
1bce59ec04 Move MultiUserSignInPolicyController out from UserManagerImpl.
In details, the policy is for session management, rather than user
management. So, move it out from UserManager.
This helps us writing UserManger related unittest easily,
because we do not need to set up local state with
multi-user sign-in policy, which has dependency issue.

BUG=278643115
TEST=Tryjob

Change-Id: Ic0fdd1bc2bd514ce6a9373d89caf5a7c4a7e3c83
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6025366
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1386582}
2024-11-22 01:32:52 +00:00
2bbdb5f961 [Code Health] Remove 'remove legacy users on startup' feature
Looks like this feature is default enabled and likely can be removed.

Bug: 356623892
Change-Id: I1516759dd08ca68463ddfe9be00a690caebc0831
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6038398
Commit-Queue: Marlon Facey <mfacey@chromium.org>
Reviewed-by: Denis Kuznetsov <antrim@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1386339}
2024-11-21 18:41:22 +00:00