Flesh out user locked/unlocked lifecycle.
When a user is first started, we assume that they're "locked" meaning that credential-encrypted data is unavailable. Once credentials have been supplied, we can transition the user to a fully running state. To facilitate this lifecycle, UserState now has two separate RUNNING_LOCKED and RUNNING states. To ensure consistent events are sent on all devices, we always step through RUNNING_LOCKED before arriving at RUNNING. This consistency means that apps processing data based on the new ACTION_LOCKED_BOOT_COMPLETED broadcast and system services using the new onUnlockUser() event will be less bug-prone over time. If the user storage is unlocked (which is the case on the majority of legacy devices), we immediately transition from the RUNNING_LOCKED into the RUNNING state. Add logging for all state transitions. When we "recover" a user in the process of being shut down, return to the last known state. Bug: 25943941 Change-Id: I5fec980f10b0d0fb2c272a662d193dc15136f9b9
Loading
Please register or sign in to comment