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

Commit 1f9e8837 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix NPE on guest user" into sc-dev

parents 4784df54 748b61ce
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -29,7 +29,6 @@ import android.os.UserManager;
import android.service.notification.NotifyingApp;
import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.IconDrawableFactory;
import android.util.Slog;

@@ -56,8 +55,6 @@ import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * This controller displays a list of recently used apps and a "See all" button. If there is
@@ -149,9 +146,12 @@ public class RecentNotifyingAppsPreferenceController extends AbstractPreferenceC

    @VisibleForTesting
    void refreshUi(Context prefContext) {
        ((PrimarySwitchPreference) mCategory.findPreference(KEY_PLACEHOLDER + 1)).setChecked(true);
        ((PrimarySwitchPreference) mCategory.findPreference(KEY_PLACEHOLDER + 2)).setChecked(true);
        ((PrimarySwitchPreference) mCategory.findPreference(KEY_PLACEHOLDER + 3)).setChecked(true);
        for (int i = 1; i <= SHOW_RECENT_APP_COUNT; i++) {
            PrimarySwitchPreference app = mCategory.findPreference(KEY_PLACEHOLDER + i);
            if (app != null) {
                app.setChecked(true);
            }
        }
        ThreadUtils.postOnBackgroundThread(() -> {
            reloadData();
            final List<NotifyingApp> recentApps = getDisplayableRecentAppList();
+37 −24
Original line number Diff line number Diff line
@@ -220,6 +220,42 @@ public class RecentNotifyingAppsPreferenceControllerTest {
        verify(mSeeAllPref).setIcon(R.drawable.ic_chevron_right_24dp);
    }

    @Test
    public void display_noCrashIfLessThan3() throws Exception {
        List<Event> events = new ArrayList<>();
        Event app = new Event();
        app.mEventType = Event.NOTIFICATION_INTERRUPTION;
        app.mPackage = "a";
        app.mTimeStamp = System.currentTimeMillis();
        events.add(app);
        ApplicationsState.AppEntry app1Entry = mock(ApplicationsState.AppEntry.class);
        app1Entry.info = mApplicationInfo;
        app1Entry.label = "app 1";

        when(mAppState.getEntry(app.getPackageName(), UserHandle.myUserId()))
                .thenReturn(app1Entry);
        when(mPackageManager.resolveActivity(any(Intent.class), anyInt())).thenReturn(
                new ResolveInfo());

        UsageEvents usageEvents = getUsageEvents(
                new String[] {app.getPackageName()},
                events);
        when(mIUsageStatsManager.queryEventsForUser(anyLong(), anyLong(), anyInt(), anyString()))
                .thenReturn(usageEvents);

        mAppEntry.info = mApplicationInfo;

        mController.displayPreference(mScreen);

        verify(mCategory).setTitle(R.string.recent_notifications);
        // Only add app1 & app2. app3 skipped because it's invalid app.
        assertThat(mApp1.getTitle()).isEqualTo(app1Entry.label);

        verify(mCategory).removePreferenceRecursively("app2");

        mController.refreshUi(mContext);
    }

    @Test
    public void display_showRecentsWithInstantApp() throws Exception {
        List<Event> events = new ArrayList<>();
@@ -267,35 +303,12 @@ public class RecentNotifyingAppsPreferenceControllerTest {
        mController.displayPreference(mScreen);

        assertThat(mApp1.getTitle()).isEqualTo(appEntry.label);
        assertThat(mApp1.getSummary()).isEqualTo("Just now");
        assertThat(mApp2.getTitle()).isEqualTo(app1Entry.label);

        verify(mCategory).removePreferenceRecursively(mApp3.getKey());
    }

    @Test
    public void display_showRecents_formatSummary() throws Exception {
        List<Event> events = new ArrayList<>();
        Event app = new Event();
        app.mEventType = Event.NOTIFICATION_INTERRUPTION;
        app.mPackage = "pkg.class";
        app.mTimeStamp = System.currentTimeMillis();
        events.add(app);
        UsageEvents usageEvents = getUsageEvents(new String[] {"pkg.class"}, events);
        when(mIUsageStatsManager.queryEventsForUser(anyLong(), anyLong(), anyInt(), anyString()))
                .thenReturn(usageEvents);

        when(mAppState.getEntry(app.getPackageName(), UserHandle.myUserId()))
                .thenReturn(mAppEntry);
        when(mPackageManager.resolveActivity(any(Intent.class), anyInt())).thenReturn(
                new ResolveInfo());

        mAppEntry.info = mApplicationInfo;

        mController.displayPreference(mScreen);

        assertThat(mApp1.getSummary()).isEqualTo("Just now");
    }

    @Test
    public void reloadData() throws Exception {
        when(mUserManager.getProfileIdsWithDisabled(0)).thenReturn(new int[] {0, 10});