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

Commit 9ea64297 authored by Yanting Yang's avatar Yanting Yang Committed by Android (Google) Code Review
Browse files

Merge "Fix NPE when loading recently opened apps on the Apps page" into udc-dev

parents 396f8c52 986857c9
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);
    }
}