diff --git a/res/values/config.xml b/res/values/config.xml index 7407020e89a..80fa0d84a99 100755 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -106,6 +106,6 @@ true - false + true diff --git a/src/com/android/settings/applications/RecentAppsPreferenceController.java b/src/com/android/settings/applications/RecentAppsPreferenceController.java index 4ff2dbf5695..43ede2fa151 100644 --- a/src/com/android/settings/applications/RecentAppsPreferenceController.java +++ b/src/com/android/settings/applications/RecentAppsPreferenceController.java @@ -153,8 +153,9 @@ public class RecentAppsPreferenceController extends PreferenceController @VisibleForTesting void refreshUi(Context prefContext) { reloadData(); - if (shouldDisplayRecentApps()) { - displayRecentApps(prefContext); + final List recentApps = getDisplayableRecentAppList(); + if (recentApps != null && !recentApps.isEmpty()) { + displayRecentApps(prefContext, recentApps); } else { displayOnlyAppInfo(); } @@ -182,11 +183,10 @@ public class RecentAppsPreferenceController extends PreferenceController } } - private void displayRecentApps(Context prefContext) { + private void displayRecentApps(Context prefContext, List recentApps) { mCategory.setTitle(R.string.recent_app_category_title); mSeeAllPref.setTitle(R.string.see_all_apps_title); mSeeAllPref.setIcon(R.drawable.ic_chevron_right_24dp); - final List recentApps = getDisplayableRecentAppList(); // Rebind prefs/avoid adding new prefs if possible. Adding/removing prefs causes jank. // Build a cached preference pool @@ -276,14 +276,6 @@ public class RecentAppsPreferenceController extends PreferenceController return recentApps; } - /** - * Whether or not we should show a list of recent apps, and a see all link. - */ - @VisibleForTesting - boolean shouldDisplayRecentApps() { - return mContext.getResources().getBoolean(R.bool.config_display_recent_apps) - && mApplicationsState != null && mStats != null && !mStats.isEmpty(); - } /** * Whether or not the app should be included in recent list. diff --git a/tests/robotests/src/com/android/settings/applications/RecentAppsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/RecentAppsPreferenceControllerTest.java index c66e229cb86..c28eed03d4d 100644 --- a/tests/robotests/src/com/android/settings/applications/RecentAppsPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/applications/RecentAppsPreferenceControllerTest.java @@ -124,30 +124,6 @@ public class RecentAppsPreferenceControllerTest { verify(mController, times(2)).refreshUi(mContext); } - @Test - public void configOff_shouldNotDisplayRecentApps() { - mController = new RecentAppsPreferenceController(mMockContext, (Application) null, null); - when(mMockContext.getResources().getBoolean(R.bool.config_display_recent_apps)) - .thenReturn(false); - - assertThat(mController.shouldDisplayRecentApps()).isFalse(); - } - - @Test - public void configOn_shouldDisplayRecentAppsWhenHaveData() { - final List stats = new ArrayList<>(); - stats.add(mock(UsageStats.class)); - when(mMockContext.getResources().getBoolean(R.bool.config_display_recent_apps)) - .thenReturn(true); - when(mUsageStatsManager.queryUsageStats(anyInt(), anyLong(), anyLong())) - .thenReturn(stats); - - mController = new RecentAppsPreferenceController(mMockContext, mAppState, null); - - mController.reloadData(); - assertThat(mController.shouldDisplayRecentApps()).isTrue(); - } - @Test public void display_shouldNotShowRecents_showAppInfoPreference() { mController = new RecentAppsPreferenceController(mMockContext, mAppState, null); @@ -206,4 +182,37 @@ public class RecentAppsPreferenceControllerTest { verify(mSeeAllPref).setIcon(R.drawable.ic_chevron_right_24dp); } + @Test + public void display_hasRecentButNoneDisplayable_showAppInfo() { + when(mMockContext.getResources().getBoolean(R.bool.config_display_recent_apps)) + .thenReturn(true); + final List stats = new ArrayList<>(); + final UsageStats stat1 = new UsageStats(); + final UsageStats stat2 = new UsageStats(); + stat1.mLastTimeUsed = System.currentTimeMillis(); + stat1.mPackageName = "com.android.phone"; + stats.add(stat1); + + stat2.mLastTimeUsed = System.currentTimeMillis(); + stat2.mPackageName = "com.android.settings"; + stats.add(stat2); + + // stat1, stat2 are not displayable + when(mAppState.getEntry(stat1.mPackageName, UserHandle.myUserId())) + .thenReturn(mock(ApplicationsState.AppEntry.class)); + when(mAppState.getEntry(stat2.mPackageName, UserHandle.myUserId())) + .thenReturn(mock(ApplicationsState.AppEntry.class)); + when(mMockContext.getPackageManager().resolveActivity(any(Intent.class), anyInt())) + .thenReturn(new ResolveInfo()); + when(mUsageStatsManager.queryUsageStats(anyInt(), anyLong(), anyLong())) + .thenReturn(stats); + + mController = new RecentAppsPreferenceController(mMockContext, mAppState, null); + mController.displayPreference(mScreen); + + verify(mCategory, never()).addPreference(any(Preference.class)); + verify(mCategory).setTitle(null); + verify(mSeeAllPref).setTitle(R.string.applications_settings); + verify(mSeeAllPref).setIcon(null); + } }