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

Commit 172e454e authored by Fengjiang Li's avatar Fengjiang Li
Browse files

Log warning when UserHandle in UserManagerState#allUsers get overridden

Bug: 340362067
Test: manual
Flag: NONE
Change-Id: I123f02f52408db0f7c711ee420743ac01df04156
parent d931dd7d
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ package com.android.launcher3.model;

import android.os.UserHandle;
import android.os.UserManager;
import android.util.Log;
import android.util.LongSparseArray;
import android.util.SparseBooleanArray;

@@ -27,6 +28,8 @@ import com.android.launcher3.pm.UserCache;
 */
public class UserManagerState {

    private static final String TAG = "UserManagerState";

    public final LongSparseArray<UserHandle> allUsers = new LongSparseArray<>();

    private final LongSparseArray<Boolean> mQuietUsersSerialNoMap = new LongSparseArray<>();
@@ -39,6 +42,13 @@ public class UserManagerState {
        for (UserHandle user : userManager.getUserProfiles()) {
            long serialNo = userCache.getSerialNumberForUser(user);
            boolean isUserQuiet = userManager.isQuietModeEnabled(user);
            // Mapping different UserHandles to the same serialNo in allUsers could lead to losing
            // UserHandle and cause a series of problems, such as incorrectly marking app as
            // disabled and deleting app icons from workspace.
            if (allUsers.get(serialNo) != null) {
                Log.w(TAG, String.format("Override allUsers[%d]=%s with %s",
                        serialNo, allUsers.get(serialNo), user));
            }
            allUsers.put(serialNo, user);
            mQuietUsersHashCodeMap.put(user.hashCode(), isUserQuiet);
            mQuietUsersSerialNoMap.put(serialNo, isUserQuiet);