diff --git a/src/com/android/settings/applications/RecentAppsPreferenceController.java b/src/com/android/settings/applications/RecentAppsPreferenceController.java index 7eeda671d03..dd9560537de 100644 --- a/src/com/android/settings/applications/RecentAppsPreferenceController.java +++ b/src/com/android/settings/applications/RecentAppsPreferenceController.java @@ -36,6 +36,7 @@ import android.util.IconDrawableFactory; import android.util.Log; import com.android.settings.R; +import com.android.settings.Utils; import com.android.settings.core.PreferenceController; import com.android.settingslib.applications.ApplicationsState; @@ -234,10 +235,10 @@ public class RecentAppsPreferenceController extends PreferenceController pref.setKey(pkgName); pref.setTitle(appEntry.label); pref.setIcon(mIconDrawableFactory.getBadgedIcon(appEntry.info)); - pref.setSummary(DateUtils.getRelativeTimeSpanString(stat.getLastTimeUsed(), - System.currentTimeMillis(), - DateUtils.MINUTE_IN_MILLIS, - DateUtils.FORMAT_ABBREV_RELATIVE)); + pref.setSummary(TextUtils.expandTemplate( + mContext.getResources().getText(R.string.recent_app_summary), + Utils.formatElapsedTime(mContext, + System.currentTimeMillis() - stat.getLastTimeUsed(), false))); pref.setOrder(i); pref.setOnPreferenceClickListener(preference -> { AppInfoBase.startAppInfoFragment(InstalledAppDetails.class, diff --git a/tests/robotests/src/com/android/settings/applications/RecentAppsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/RecentAppsPreferenceControllerTest.java index 2b18e0542a3..44039910850 100644 --- a/tests/robotests/src/com/android/settings/applications/RecentAppsPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/applications/RecentAppsPreferenceControllerTest.java @@ -27,6 +27,7 @@ import android.os.UserManager; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceCategory; import android.support.v7.preference.PreferenceScreen; +import android.text.TextUtils; import com.android.settings.R; import com.android.settings.testutils.SettingsRobolectricTestRunner; @@ -37,6 +38,7 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Answers; +import org.mockito.ArgumentMatcher; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; @@ -50,6 +52,8 @@ import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.anyLong; import static org.mockito.Matchers.anyString; +import static org.mockito.Matchers.argThat; +import static org.mockito.Matchers.eq; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; @@ -175,6 +179,8 @@ public class RecentAppsPreferenceControllerTest { .thenReturn(new ResolveInfo()); when(mUsageStatsManager.queryUsageStats(anyInt(), anyLong(), anyLong())) .thenReturn(stats); + when(mMockContext.getString(eq(R.string.battery_history_minutes_no_seconds), anyInt())) + .thenReturn(mContext.getString(R.string.battery_history_minutes_no_seconds, 45)); mController = new RecentAppsPreferenceController(mMockContext, mAppState, null); mController.displayPreference(mScreen); @@ -222,4 +228,36 @@ public class RecentAppsPreferenceControllerTest { verify(mSeeAllPref).setTitle(R.string.applications_settings); verify(mSeeAllPref).setIcon(null); } + + @Test + public void display_showRecents_formatSummary() { + when(mMockContext.getResources().getBoolean(R.bool.config_display_recent_apps)) + .thenReturn(true); + final List stats = new ArrayList<>(); + final UsageStats stat1 = new UsageStats(); + stat1.mLastTimeUsed = System.currentTimeMillis(); + stat1.mPackageName = "pkg.class"; + stats.add(stat1); + + when(mAppState.getEntry(stat1.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); + when(mMockContext.getString(eq(R.string.battery_history_minutes_no_seconds), anyInt())) + .thenReturn(mContext.getString(R.string.battery_history_minutes_no_seconds, 35)); + when(mMockContext.getResources().getText(eq(R.string.recent_app_summary))) + .thenReturn(mContext.getResources().getText(R.string.recent_app_summary)); + + mController = new RecentAppsPreferenceController(mMockContext, mAppState, null); + mController.displayPreference(mScreen); + + verify(mCategory).addPreference(argThat(summaryMatches("35m ago"))); + } + + private static ArgumentMatcher summaryMatches(String expected) { + return preference -> TextUtils.equals(expected, preference.getSummary()); + } + }