Merge "Change the logic for showing "App info" vs "show more""
This commit is contained in:
committed by
Android (Google) Code Review
commit
658599328e
@@ -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