From 162e88c262055b9e8bca20833dee1f5ebdb540a5 Mon Sep 17 00:00:00 2001 From: Sunny Shao Date: Fri, 12 Jul 2019 17:19:41 +0800 Subject: [PATCH] Use the date format to show the system update info Use the "July 13, 2019" or similar to display if the value is a valid date data. Bug: 137089104 Test: visual test & robotest Change-Id: Ie4bab2617c1cd6fd956bf6d1a22ce96e6b0b58d0 --- .../MainlineModuleVersionPreferenceController.java | 38 +++++++++++++++++++- ...nlineModuleVersionPreferenceControllerTest.java | 42 +++++++++++++++++----- 2 files changed, 71 insertions(+), 9 deletions(-) diff --git a/src/com/android/settings/deviceinfo/firmwareversion/MainlineModuleVersionPreferenceController.java b/src/com/android/settings/deviceinfo/firmwareversion/MainlineModuleVersionPreferenceController.java index ff9352a7d4..fd54f19b81 100644 --- a/src/com/android/settings/deviceinfo/firmwareversion/MainlineModuleVersionPreferenceController.java +++ b/src/com/android/settings/deviceinfo/firmwareversion/MainlineModuleVersionPreferenceController.java @@ -21,6 +21,7 @@ import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.text.TextUtils; +import android.text.format.DateFormat; import android.util.Log; import androidx.annotation.VisibleForTesting; @@ -28,9 +29,20 @@ import androidx.preference.Preference; import com.android.settings.core.BasePreferenceController; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.Locale; +import java.util.Optional; +import java.util.TimeZone; + public class MainlineModuleVersionPreferenceController extends BasePreferenceController { private static final String TAG = "MainlineModuleControl"; + private static final List VERSION_NAME_DATE_PATTERNS = Arrays.asList("yyyy-MM-dd", + "yyyy-MM"); @VisibleForTesting static final Intent MODULE_UPDATE_INTENT = @@ -81,6 +93,30 @@ public class MainlineModuleVersionPreferenceController extends BasePreferenceCon @Override public CharSequence getSummary() { - return mModuleVersion; + if (TextUtils.isEmpty(mModuleVersion)) { + return mModuleVersion; + } + + final Optional parsedDate = parseDateFromVersionName(mModuleVersion); + if (!parsedDate.isPresent()) { + Log.w("Could not parse mainline versionName (%s) as date.", mModuleVersion); + return mModuleVersion; + } + + return DateFormat.getLongDateFormat(mContext).format(parsedDate.get()); + } + + private Optional parseDateFromVersionName(String text) { + for (String pattern : VERSION_NAME_DATE_PATTERNS) { + try { + final SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern, + Locale.getDefault()); + simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); + return Optional.of(simpleDateFormat.parse(text)); + } catch (ParseException e) { + // ignore and try next pattern + } + } + return Optional.empty(); } } diff --git a/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/MainlineModuleVersionPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/MainlineModuleVersionPreferenceControllerTest.java index adddc961e0..950d96237d 100644 --- a/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/MainlineModuleVersionPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/MainlineModuleVersionPreferenceControllerTest.java @@ -31,12 +31,9 @@ import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; -import android.util.FeatureFlagUtils; import androidx.preference.Preference; -import com.android.settings.core.FeatureFlags; - import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -91,7 +88,7 @@ public class MainlineModuleVersionPreferenceControllerTest { @Test public void getAvailabilityStatus_hasMainlineModulePackageInfo_available() throws Exception { - setupModulePackage(); + setupModulePackage("test version 123"); final MainlineModuleVersionPreferenceController controller = new MainlineModuleVersionPreferenceController(mContext, "key"); @@ -101,7 +98,7 @@ public class MainlineModuleVersionPreferenceControllerTest { @Test public void updateStates_canHandleIntent_setIntentToPreference() throws Exception { - setupModulePackage(); + setupModulePackage("test version 123"); when(mPackageManager.resolveActivity(MODULE_UPDATE_INTENT, 0)) .thenReturn(new ResolveInfo()); @@ -115,7 +112,7 @@ public class MainlineModuleVersionPreferenceControllerTest { @Test public void updateStates_cannotHandleIntent_setNullToPreference() throws Exception { - setupModulePackage(); + setupModulePackage("test version 123"); when(mPackageManager.resolveActivity(MODULE_UPDATE_INTENT, 0)) .thenReturn(null); @@ -127,9 +124,38 @@ public class MainlineModuleVersionPreferenceControllerTest { assertThat(mPreference.getIntent()).isNull(); } - private void setupModulePackage() throws Exception { + @Test + public void getSummary_versionIsNull_returnNull() throws Exception { + setupModulePackage(null); + + final MainlineModuleVersionPreferenceController controller = + new MainlineModuleVersionPreferenceController(mContext, "key"); + + assertThat(controller.getSummary()).isNull(); + } + + @Test + public void getSummary_versionIsMonth_returnMonth() throws Exception { + setupModulePackage("2019-05"); + + final MainlineModuleVersionPreferenceController controller = + new MainlineModuleVersionPreferenceController(mContext, "key"); + + assertThat(controller.getSummary()).isEqualTo("May 01, 2019"); + } + + @Test + public void getSummary_versionIsDate_returnDate() throws Exception { + setupModulePackage("2019-05-13"); + + final MainlineModuleVersionPreferenceController controller = + new MainlineModuleVersionPreferenceController(mContext, "key"); + + assertThat(controller.getSummary()).isEqualTo("May 13, 2019"); + } + + private void setupModulePackage(String version) throws Exception { final String provider = "test.provider"; - final String version = "test version 123"; final PackageInfo info = new PackageInfo(); info.versionName = version; when(mContext.getString( -- 2.11.0