Change the logic for showing "App info" vs "show more"
Fix: 33265548 Test: robotests The old logic shows "show more" when there is any recent app, new logic first checks if there is any displayable recent app. Otherwise go back to display "app info". Change-Id: I485725eaa025b9e2cfffc5e9e1923aa771bb0e12
This commit is contained in:
@@ -106,6 +106,6 @@
|
|||||||
<bool name="config_tintSettingIcon">true</bool>
|
<bool name="config_tintSettingIcon">true</bool>
|
||||||
|
|
||||||
<!-- Whether or not App & Notification screen should display recently used apps -->
|
<!-- Whether or not App & Notification screen should display recently used apps -->
|
||||||
<bool name="config_display_recent_apps">false</bool>
|
<bool name="config_display_recent_apps">true</bool>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
@@ -153,8 +153,9 @@ public class RecentAppsPreferenceController extends PreferenceController
|
|||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
void refreshUi(Context prefContext) {
|
void refreshUi(Context prefContext) {
|
||||||
reloadData();
|
reloadData();
|
||||||
if (shouldDisplayRecentApps()) {
|
final List<UsageStats> recentApps = getDisplayableRecentAppList();
|
||||||
displayRecentApps(prefContext);
|
if (recentApps != null && !recentApps.isEmpty()) {
|
||||||
|
displayRecentApps(prefContext, recentApps);
|
||||||
} else {
|
} else {
|
||||||
displayOnlyAppInfo();
|
displayOnlyAppInfo();
|
||||||
}
|
}
|
||||||
@@ -182,11 +183,10 @@ public class RecentAppsPreferenceController extends PreferenceController
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void displayRecentApps(Context prefContext) {
|
private void displayRecentApps(Context prefContext, List<UsageStats> recentApps) {
|
||||||
mCategory.setTitle(R.string.recent_app_category_title);
|
mCategory.setTitle(R.string.recent_app_category_title);
|
||||||
mSeeAllPref.setTitle(R.string.see_all_apps_title);
|
mSeeAllPref.setTitle(R.string.see_all_apps_title);
|
||||||
mSeeAllPref.setIcon(R.drawable.ic_chevron_right_24dp);
|
mSeeAllPref.setIcon(R.drawable.ic_chevron_right_24dp);
|
||||||
final List<UsageStats> recentApps = getDisplayableRecentAppList();
|
|
||||||
|
|
||||||
// Rebind prefs/avoid adding new prefs if possible. Adding/removing prefs causes jank.
|
// Rebind prefs/avoid adding new prefs if possible. Adding/removing prefs causes jank.
|
||||||
// Build a cached preference pool
|
// Build a cached preference pool
|
||||||
@@ -276,14 +276,6 @@ public class RecentAppsPreferenceController extends PreferenceController
|
|||||||
return recentApps;
|
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.
|
* Whether or not the app should be included in recent list.
|
||||||
|
@@ -124,30 +124,6 @@ public class RecentAppsPreferenceControllerTest {
|
|||||||
verify(mController, times(2)).refreshUi(mContext);
|
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<UsageStats> 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
|
@Test
|
||||||
public void display_shouldNotShowRecents_showAppInfoPreference() {
|
public void display_shouldNotShowRecents_showAppInfoPreference() {
|
||||||
mController = new RecentAppsPreferenceController(mMockContext, mAppState, null);
|
mController = new RecentAppsPreferenceController(mMockContext, mAppState, null);
|
||||||
@@ -206,4 +182,37 @@ public class RecentAppsPreferenceControllerTest {
|
|||||||
verify(mSeeAllPref).setIcon(R.drawable.ic_chevron_right_24dp);
|
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<UsageStats> 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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user