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

Commit ba5db90d 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 udc-dev am: 9ea64297

parents 7d3bfc3e 9ea64297
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);
    }
}