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

Commit bfae8744 authored by Yanting Yang's avatar Yanting Yang Committed by Automerger Merge Worker
Browse files

Merge "Fix NPE when loading recently opened apps on the Apps page" into...

Merge "Fix NPE when loading recently opened apps on the Apps page" into udc-dev am: 9ea64297 am: 7f38200d

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23493102



Change-Id: Iea882ed2b95d5231bdf2b1f01a168e6ab43d49d5
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents ef720180 7f38200d
Loading
Loading
Loading
Loading
+11 −6
Original line number Diff line number Diff line
@@ -484,8 +484,9 @@ public class ApplicationsState {
        if (DEBUG_LOCKING) Log.v(TAG, "getEntry about to acquire lock...");
        synchronized (mEntriesMap) {
            AppEntry entry = null;
            if (mEntriesMap.contains(userId)) {
                entry = mEntriesMap.get(userId).get(packageName);
            HashMap<String, AppEntry> userEntriesMap = mEntriesMap.get(userId);
            if (userEntriesMap != null) {
                entry = userEntriesMap.get(packageName);
            }
            if (entry == null) {
                ApplicationInfo info = getAppInfoLocked(packageName, userId);
@@ -735,8 +736,9 @@ public class ApplicationsState {
    private AppEntry getEntryLocked(ApplicationInfo info) {
        int userId = UserHandle.getUserId(info.uid);
        AppEntry entry = null;
        if (mEntriesMap.contains(userId)) {
            entry = mEntriesMap.get(userId).get(info.packageName);
        HashMap<String, AppEntry> userEntriesMap = mEntriesMap.get(userId);
        if (userEntriesMap != null) {
            entry = userEntriesMap.get(info.packageName);
        }
        if (DEBUG) {
            Log.i(TAG, "Looking up entry of pkg " + info.packageName + ": " + entry);
@@ -752,8 +754,11 @@ public class ApplicationsState {
                Log.i(TAG, "Creating AppEntry for " + info.packageName);
            }
            entry = new AppEntry(mContext, info, mCurId++);
            mEntriesMap.get(userId).put(info.packageName, entry);
            userEntriesMap = mEntriesMap.get(userId);
            if (userEntriesMap != null) {
                userEntriesMap.put(info.packageName, entry);
                mAppEntries.add(entry);
            }
        } else if (entry.info != info) {
            entry.info = info;
        }
+8 −5
Original line number Diff line number Diff line
@@ -804,7 +804,7 @@ public class ApplicationsStateRoboTest {
    }

    @Test
    public void getEntry_validUserId_shouldReturnEntry() {
    public void getEntry_hasCache_shouldReturnCacheEntry() {
        mApplicationsState.mEntriesMap.put(/* userId= */ 0, new HashMap<>());
        addApp(PKG_1, /* id= */ 1);

@@ -813,10 +813,13 @@ public class ApplicationsStateRoboTest {
    }

    @Test
    public void getEntry_invalidUserId_shouldReturnNull() {
        mApplicationsState.mEntriesMap.put(/* userId= */ 0, new HashMap<>());
        addApp(PKG_1, /* id= */ 1);
    public void getEntry_hasNoCache_shouldReturnEntry() {
        mApplicationsState.mEntriesMap.clear();
        ApplicationInfo appInfo = createApplicationInfo(PKG_1, /* uid= */ 0);
        mApplicationsState.mApplications.add(appInfo);
        mApplicationsState.mSystemModules.put(PKG_1, /* value= */ false);

        assertThat(mApplicationsState.getEntry(PKG_1, /* userId= */ -1)).isNull();
        assertThat(mApplicationsState.getEntry(PKG_1, /* userId= */ 0).info.packageName)
                .isEqualTo(PKG_1);
    }
}