Loading src/com/android/settings/deviceinfo/firmwareversion/MainlineModuleVersionPreferenceController.java +37 −1 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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<String> VERSION_NAME_DATE_PATTERNS = Arrays.asList("yyyy-MM-dd", "yyyy-MM"); @VisibleForTesting static final Intent MODULE_UPDATE_INTENT = Loading Loading @@ -81,6 +93,30 @@ public class MainlineModuleVersionPreferenceController extends BasePreferenceCon @Override public CharSequence getSummary() { if (TextUtils.isEmpty(mModuleVersion)) { return mModuleVersion; } final Optional<Date> 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<Date> 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(); } } tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/MainlineModuleVersionPreferenceControllerTest.java +34 −8 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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"); Loading @@ -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()); Loading @@ -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); Loading @@ -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( Loading Loading
src/com/android/settings/deviceinfo/firmwareversion/MainlineModuleVersionPreferenceController.java +37 −1 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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<String> VERSION_NAME_DATE_PATTERNS = Arrays.asList("yyyy-MM-dd", "yyyy-MM"); @VisibleForTesting static final Intent MODULE_UPDATE_INTENT = Loading Loading @@ -81,6 +93,30 @@ public class MainlineModuleVersionPreferenceController extends BasePreferenceCon @Override public CharSequence getSummary() { if (TextUtils.isEmpty(mModuleVersion)) { return mModuleVersion; } final Optional<Date> 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<Date> 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(); } }
tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/MainlineModuleVersionPreferenceControllerTest.java +34 −8 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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"); Loading @@ -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()); Loading @@ -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); Loading @@ -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( Loading