Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 29c75abf authored by Ram Periathiruvadi's avatar Ram Periathiruvadi
Browse files

Resolve trust agents on USER_STARTED in addition to USER_ADDED.

ACTION_USER_ADDED is a broadcast that is sent once when the user is
created.  TrustManagerService resolves the enabled trust agents for an
user only when the user is created.  However, if there is a reboot or
power loss before the broadcast is received, the trust agents are never
resolved for that user.

This change also registers for ACTION_USER_STARTED, so the service
checks for enabled trust agents on every boot.  If the trust agents have
been already resolved and initialized for that users, there is already a
Secure Settings key (TRUST_AGENTS_INITIALIZED) that is turned on, so we
wouldn't be doing this more than once per user.

Bug: 150145767
Test: TrustManagerService resolves trust agents only once - either on
USER_ADDED or USER_STARTED.

Change-Id: I83c2dd02d4b476f8b85af1aa4d9d0c77095207ce
parent 353d26c8
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -1389,7 +1389,8 @@ public class TrustManagerService extends SystemService {
            if (DevicePolicyManager.ACTION_DEVICE_POLICY_MANAGER_STATE_CHANGED.equals(action)) {
                refreshAgentList(getSendingUserId());
                updateDevicePolicyFeatures();
            } else if (Intent.ACTION_USER_ADDED.equals(action)) {
            } else if (Intent.ACTION_USER_ADDED.equals(action) || Intent.ACTION_USER_STARTED.equals(
                    action)) {
                int userId = getUserId(intent);
                if (userId > 0) {
                    maybeEnableFactoryTrustAgents(mLockPatternUtils, userId);
@@ -1430,6 +1431,7 @@ public class TrustManagerService extends SystemService {
            filter.addAction(DevicePolicyManager.ACTION_DEVICE_POLICY_MANAGER_STATE_CHANGED);
            filter.addAction(Intent.ACTION_USER_ADDED);
            filter.addAction(Intent.ACTION_USER_REMOVED);
            filter.addAction(Intent.ACTION_USER_STARTED);
            context.registerReceiverAsUser(this,
                    UserHandle.ALL,
                    filter,