diff --git a/res/layout/battery_chart_graph.xml b/res/layout/battery_chart_graph.xml index db86693043e..e89c9120c74 100644 --- a/res/layout/battery_chart_graph.xml +++ b/res/layout/battery_chart_graph.xml @@ -40,12 +40,14 @@ android:contentDescription="@string/battery_usage_chart" android:textAppearance="?android:attr/textAppearanceSmall" settings:textColor="?android:attr/textColorSecondary" /> + + android:textColor="?android:attr/textColorSecondary" + android:textSize="14dp" /> diff --git a/res/layout/notification_history_app_layout.xml b/res/layout/notification_history_app_layout.xml index 8f66628e74b..24a43c66c71 100644 --- a/res/layout/notification_history_app_layout.xml +++ b/res/layout/notification_history_app_layout.xml @@ -78,13 +78,14 @@ android:layout_height="1dp" android:background="?android:attr/listDivider"/> - + \ No newline at end of file diff --git a/res/values/dimens.xml b/res/values/dimens.xml index 1b8179abdaf..7a7588315ef 100755 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -437,7 +437,7 @@ 6dp 1dp 4dp - 3dp + 5dp 1dp 2dp diff --git a/res/values/strings.xml b/res/values/strings.xml index a05640b0d5e..742dd836395 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -6654,10 +6654,6 @@ System usage for %s App usage for %s - - am - - pm Total: less than a min diff --git a/res/xml/smart_battery_detail.xml b/res/xml/smart_battery_detail.xml index 9c0aac58318..97951252525 100644 --- a/res/xml/smart_battery_detail.xml +++ b/res/xml/smart_battery_detail.xml @@ -22,7 +22,7 @@ android:title="@string/smart_battery_manager_title" settings:keywords="@string/keywords_battery_adaptive_preferences"> - diff --git a/src/com/android/settings/biometrics/BiometricUtils.java b/src/com/android/settings/biometrics/BiometricUtils.java index a98c3555f71..7dd63850dee 100644 --- a/src/com/android/settings/biometrics/BiometricUtils.java +++ b/src/com/android/settings/biometrics/BiometricUtils.java @@ -244,7 +244,9 @@ public class BiometricUtils { * @return true if the next enrollment was started */ public static boolean tryStartingNextBiometricEnroll(@NonNull Activity activity, - int requestCode) { + int requestCode, String debugReason) { + + Log.d(TAG, "tryStartingNextBiometricEnroll, debugReason: " + debugReason); final PendingIntent pendingIntent = (PendingIntent) activity.getIntent() .getExtra(MultiBiometricEnrollHelper.EXTRA_ENROLL_AFTER_FACE); if (pendingIntent != null) { diff --git a/src/com/android/settings/biometrics/face/FaceEnrollEducation.java b/src/com/android/settings/biometrics/face/FaceEnrollEducation.java index fa8f5564f2e..6509d4e6e2e 100644 --- a/src/com/android/settings/biometrics/face/FaceEnrollEducation.java +++ b/src/com/android/settings/biometrics/face/FaceEnrollEducation.java @@ -216,7 +216,8 @@ public class FaceEnrollEducation extends BiometricEnrollBase { } protected void onSkipButtonClick(View view) { - if (!BiometricUtils.tryStartingNextBiometricEnroll(this, ENROLL_NEXT_BIOMETRIC_REQUEST)) { + if (!BiometricUtils.tryStartingNextBiometricEnroll(this, ENROLL_NEXT_BIOMETRIC_REQUEST, + "edu_skip")) { setResult(RESULT_SKIP); finish(); } diff --git a/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java b/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java index e9092c795ea..1de4bc71c3d 100644 --- a/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java +++ b/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java @@ -59,28 +59,32 @@ public class FaceEnrollIntroduction extends BiometricEnrollIntroduction { @Override protected void onCancelButtonClick(View view) { - if (!BiometricUtils.tryStartingNextBiometricEnroll(this, ENROLL_NEXT_BIOMETRIC_REQUEST)) { + if (!BiometricUtils.tryStartingNextBiometricEnroll(this, ENROLL_NEXT_BIOMETRIC_REQUEST, + "cancel")) { super.onCancelButtonClick(view); } } @Override protected void onSkipButtonClick(View view) { - if (!BiometricUtils.tryStartingNextBiometricEnroll(this, ENROLL_NEXT_BIOMETRIC_REQUEST)) { + if (!BiometricUtils.tryStartingNextBiometricEnroll(this, ENROLL_NEXT_BIOMETRIC_REQUEST, + "skip")) { super.onSkipButtonClick(view); } } @Override protected void onEnrollmentSkipped(@Nullable Intent data) { - if (!BiometricUtils.tryStartingNextBiometricEnroll(this, ENROLL_NEXT_BIOMETRIC_REQUEST)) { + if (!BiometricUtils.tryStartingNextBiometricEnroll(this, ENROLL_NEXT_BIOMETRIC_REQUEST, + "skipped")) { super.onEnrollmentSkipped(data); } } @Override protected void onFinishedEnrolling(@Nullable Intent data) { - if (!BiometricUtils.tryStartingNextBiometricEnroll(this, ENROLL_NEXT_BIOMETRIC_REQUEST)) { + if (!BiometricUtils.tryStartingNextBiometricEnroll(this, ENROLL_NEXT_BIOMETRIC_REQUEST, + "finished")) { super.onFinishedEnrolling(data); } } diff --git a/src/com/android/settings/fuelgauge/BatteryChartView.java b/src/com/android/settings/fuelgauge/BatteryChartView.java index a98c644b22a..7bc60b23c38 100644 --- a/src/com/android/settings/fuelgauge/BatteryChartView.java +++ b/src/com/android/settings/fuelgauge/BatteryChartView.java @@ -57,7 +57,8 @@ public class BatteryChartView extends AppCompatImageView implements View.OnClick Arrays.asList("SwitchAccessService", "TalkBackService", "JustSpeakService"); private static final int DEFAULT_TRAPEZOID_COUNT = 12; - private static final int DEFAULT_TIMESTAMP_COUNT = 5; + private static final int DEFAULT_TIMESTAMP_COUNT = 4; + private static final int TIMESTAMP_GAPS_COUNT = DEFAULT_TIMESTAMP_COUNT - 1; private static final int DIVIDER_COLOR = Color.parseColor("#CDCCC5"); private static final long UPDATE_STATE_DELAYED_TIME = 500L; @@ -91,7 +92,7 @@ public class BatteryChartView extends AppCompatImageView implements View.OnClick new Rect[] {new Rect(), new Rect(), new Rect()}; // For drawing the timestamp information. private final Rect[] mTimestampsBounds = - new Rect[] {new Rect(), new Rect(), new Rect(), new Rect(), new Rect()}; + new Rect[] {new Rect(), new Rect(), new Rect(), new Rect()}; @VisibleForTesting Handler mHandler = new Handler(); @@ -198,13 +199,14 @@ public class BatteryChartView extends AppCompatImageView implements View.OnClick if (mTimestamps == null) { mTimestamps = new String[DEFAULT_TIMESTAMP_COUNT]; } - final long timeSlotOffset = DateUtils.HOUR_IN_MILLIS * 6; + final long timeSlotOffset = + DateUtils.HOUR_IN_MILLIS * (/*total 24 hours*/ 24 / TIMESTAMP_GAPS_COUNT); final boolean is24HourFormat = DateFormat.is24HourFormat(getContext()); for (int index = 0; index < DEFAULT_TIMESTAMP_COUNT; index++) { mTimestamps[index] = ConvertUtils.utcToLocalTimeHour( getContext(), - latestTimestamp - (4 - index) * timeSlotOffset, + latestTimestamp - (TIMESTAMP_GAPS_COUNT - index) * timeSlotOffset, is24HourFormat); } requestLayout(); @@ -426,8 +428,9 @@ public class BatteryChartView extends AppCompatImageView implements View.OnClick final float[] xOffsets = new float[DEFAULT_TIMESTAMP_COUNT]; final float baselineX = mDividerWidth * .5f; final float offsetX = mDividerWidth + unitWidth; + final int slotBarOffset = (/*total 12 bars*/ 12) / TIMESTAMP_GAPS_COUNT; for (int index = 0; index < DEFAULT_TIMESTAMP_COUNT; index++) { - xOffsets[index] = baselineX + index * offsetX * 3; + xOffsets[index] = baselineX + index * offsetX * slotBarOffset; } drawTimestamp(canvas, xOffsets); } @@ -439,13 +442,15 @@ public class BatteryChartView extends AppCompatImageView implements View.OnClick mTimestamps[0], xOffsets[0] - mTimestampsBounds[0].left, getTimestampY(0), mTextPaint); + final int latestIndex = DEFAULT_TIMESTAMP_COUNT - 1; // Draws the last timestamp info. canvas.drawText( - mTimestamps[4], - xOffsets[4] - mTimestampsBounds[4].width() - mTimestampsBounds[4].left, - getTimestampY(4), mTextPaint); + mTimestamps[latestIndex], + xOffsets[latestIndex] - mTimestampsBounds[latestIndex].width() + - mTimestampsBounds[latestIndex].left, + getTimestampY(latestIndex), mTextPaint); // Draws the rest of timestamp info since it is located in the center. - for (int index = 1; index <= 3; index++) { + for (int index = 1; index <= DEFAULT_TIMESTAMP_COUNT - 2; index++) { canvas.drawText( mTimestamps[index], xOffsets[index] - diff --git a/src/com/android/settings/fuelgauge/BatteryInfo.java b/src/com/android/settings/fuelgauge/BatteryInfo.java index 92151c0c58d..4433da2c9cc 100644 --- a/src/com/android/settings/fuelgauge/BatteryInfo.java +++ b/src/com/android/settings/fuelgauge/BatteryInfo.java @@ -25,6 +25,7 @@ import android.os.BatteryStatsManager; import android.os.BatteryUsageStats; import android.os.SystemClock; import android.text.format.Formatter; +import android.util.Log; import android.util.SparseIntArray; import androidx.annotation.NonNull; @@ -42,6 +43,7 @@ import com.android.settingslib.utils.PowerUtil; import com.android.settingslib.utils.StringUtil; public class BatteryInfo { + private static final String TAG = "BatteryInfo"; public CharSequence chargeLabel; public CharSequence remainingLabel; @@ -155,8 +157,13 @@ public class BatteryInfo { if (batteryUsageStats != null) { stats = batteryUsageStats; } else { - stats = context.getSystemService(BatteryStatsManager.class) - .getBatteryUsageStats(); + try { + stats = context.getSystemService(BatteryStatsManager.class) + .getBatteryUsageStats(); + } catch (RuntimeException e) { + Log.e(TAG, "getBatteryInfo() from getBatteryUsageStats()", e); + return null; + } } return getBatteryInfo(context, stats, shortString); } diff --git a/src/com/android/settings/fuelgauge/BatteryUsageStatsLoader.java b/src/com/android/settings/fuelgauge/BatteryUsageStatsLoader.java index d35ef82b818..0acc54e758b 100644 --- a/src/com/android/settings/fuelgauge/BatteryUsageStatsLoader.java +++ b/src/com/android/settings/fuelgauge/BatteryUsageStatsLoader.java @@ -20,6 +20,7 @@ import android.content.Context; import android.os.BatteryStatsManager; import android.os.BatteryUsageStats; import android.os.BatteryUsageStatsQuery; +import android.util.Log; import com.android.settingslib.utils.AsyncLoaderCompat; @@ -27,6 +28,7 @@ import com.android.settingslib.utils.AsyncLoaderCompat; * Loader to get new {@link BatteryUsageStats} in the background */ public class BatteryUsageStatsLoader extends AsyncLoaderCompat { + private static final String TAG = "BatteryUsageStatsLoader"; private final BatteryStatsManager mBatteryStatsManager; private final boolean mIncludeBatteryHistory; @@ -42,7 +44,12 @@ public class BatteryUsageStatsLoader extends AsyncLoaderCompat loader, BatteryInfo batteryInfo) { + if (batteryInfo == null) { + Log.w(TAG, "mBatteryInfoLoaderCallbacks: batteryInfo = null"); + return; + } mBatteryHeaderPreferenceController.updateHeaderPreference(batteryInfo); mBatteryHeaderPreferenceController.updateHeaderByBatteryTips( mBatteryTipPreferenceController.getCurrentBatteryTip(), batteryInfo); @@ -126,6 +131,10 @@ public class PowerUsageSummary extends PowerUsageBase implements @Override public void onLoadFinished(Loader> loader, List data) { + if (mBatteryInfo == null) { + Log.w(TAG, "mBatteryTipsCallbacks: batteryInfo = null"); + return; + } mBatteryTipPreferenceController.updateBatteryTips(data); mBatteryHeaderPreferenceController.updateHeaderByBatteryTips( mBatteryTipPreferenceController.getCurrentBatteryTip(), mBatteryInfo); diff --git a/src/com/android/settings/fuelgauge/batterytip/BatteryTipLoader.java b/src/com/android/settings/fuelgauge/batterytip/BatteryTipLoader.java index 7d11ba5a718..b6806e8573a 100644 --- a/src/com/android/settings/fuelgauge/batterytip/BatteryTipLoader.java +++ b/src/com/android/settings/fuelgauge/batterytip/BatteryTipLoader.java @@ -18,6 +18,7 @@ package com.android.settings.fuelgauge.batterytip; import android.content.Context; import android.os.BatteryUsageStats; +import android.util.Log; import androidx.annotation.VisibleForTesting; @@ -67,16 +68,17 @@ public class BatteryTipLoader extends AsyncLoaderCompat> { final BatteryInfo batteryInfo = mBatteryUtils.getBatteryInfo(TAG); final Context context = getContext(); + tips.add(new EarlyWarningDetector(policy, context).detect()); + if (batteryInfo == null) { + Log.w(TAG, "loadInBackground() batteryInfo = null"); + return tips; + } + tips.add(new LowBatteryDetector(context, policy, batteryInfo).detect()); tips.add(new HighUsageDetector(context, policy, mBatteryUsageStats, batteryInfo).detect()); tips.add(new SmartBatteryDetector( context, policy, batteryInfo, context.getContentResolver()).detect()); - tips.add(new EarlyWarningDetector(policy, context).detect()); tips.add(new BatteryDefenderDetector(batteryInfo).detect()); - // Disable this feature now since it introduces false positive cases. We will try to improve - // it in the future. - // tips.add(new RestrictAppDetector(context, policy).detect()); - Collections.sort(tips); return tips; } diff --git a/src/com/android/settings/notification/history/NotificationHistoryAdapter.java b/src/com/android/settings/notification/history/NotificationHistoryAdapter.java index 0683ef7612d..dfa8a30c15d 100644 --- a/src/com/android/settings/notification/history/NotificationHistoryAdapter.java +++ b/src/com/android/settings/notification/history/NotificationHistoryAdapter.java @@ -71,6 +71,11 @@ public class NotificationHistoryAdapter extends return new NotificationHistoryViewHolder(view); } + @Override + public long getItemId(int position) { + return mValues.get(position).hashCode(); + } + @Override public void onBindViewHolder(final @NonNull NotificationHistoryViewHolder holder, int position) { diff --git a/src/com/android/settings/notification/history/NotificationHistoryRecyclerView.java b/src/com/android/settings/notification/history/NotificationHistoryRecyclerView.java index 06c74bc3432..224c31d1f55 100644 --- a/src/com/android/settings/notification/history/NotificationHistoryRecyclerView.java +++ b/src/com/android/settings/notification/history/NotificationHistoryRecyclerView.java @@ -40,7 +40,6 @@ public class NotificationHistoryRecyclerView extends RecyclerView { ItemTouchHelper touchHelper = new ItemTouchHelper( new DismissTouchHelper(0, ItemTouchHelper.START | ItemTouchHelper.END)); touchHelper.attachToRecyclerView(this); - setNestedScrollingEnabled(false); } public void setOnItemSwipeDeleteListener(OnItemSwipeDeleteListener listener) { diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryChartPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryChartPreferenceControllerTest.java index fd4e82d4b23..43fbe81a3a1 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryChartPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryChartPreferenceControllerTest.java @@ -50,7 +50,6 @@ import com.android.settings.testutils.FakeFeatureFactory; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import org.junit.Before; -import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; @@ -65,7 +64,6 @@ import java.util.HashMap; import java.util.Locale; import java.util.List; import java.util.Map; -import java.util.TimeZone; @RunWith(RobolectricTestRunner.class) public final class BatteryChartPreferenceControllerTest { @@ -125,37 +123,6 @@ public final class BatteryChartPreferenceControllerTest { createBatteryHistoryMap()); } - @Ignore - @Test - public void testOnResume_uiModeIsChanged_clearBatteryDiffEntryCache() { - doReturn(mResources).when(mContext).getResources(); - doReturn(mConfiguration).when(mResources).getConfiguration(); - mConfiguration.uiMode = Configuration.UI_MODE_NIGHT_UNDEFINED; - // Ensures the testing environment is correct. - assertThat(BatteryDiffEntry.sResourceCache).hasSize(1); - mBatteryChartPreferenceController.onResume(); - // Changes the uiMode in the configuration. - mConfiguration.uiMode = Configuration.UI_MODE_NIGHT_YES; - - mBatteryChartPreferenceController.onResume(); - assertThat(BatteryDiffEntry.sResourceCache).isEmpty(); - } - - @Ignore - @Test - public void testOnResume_uiModeIsNotChanged_notClearBatteryDiffEntryCache() { - doReturn(mResources).when(mContext).getResources(); - doReturn(mConfiguration).when(mResources).getConfiguration(); - mConfiguration.uiMode = Configuration.UI_MODE_NIGHT_UNDEFINED; - // Ensures the testing environment is correct. - assertThat(BatteryDiffEntry.sResourceCache).hasSize(1); - - mBatteryChartPreferenceController.onResume(); - assertThat(BatteryDiffEntry.sResourceCache).isNotEmpty(); - verify(mMetricsFeatureProvider) - .action(mContext, SettingsEnums.OPEN_BATTERY_USAGE); - } - @Test public void testOnDestroy_activityIsChanging_clearBatteryEntryCache() { doReturn(true).when(mSettingsActivity).isChangingConfigurations(); @@ -579,12 +546,12 @@ public final class BatteryChartPreferenceControllerTest { // Verifies the title in the preference group. verify(mBatteryChartPreferenceController.mAppListPrefGroup) .setTitle(captor.capture()); - assertThat(captor.getValue()).isEqualTo("App usage for 4 - 7"); + assertThat(captor.getValue()).isNotEqualTo("App usage for past 24 hr"); // Verifies the title in the expandable divider. captor = ArgumentCaptor.forClass(String.class); verify(mBatteryChartPreferenceController.mExpandDividerPreference) .setTitle(captor.capture()); - assertThat(captor.getValue()).isEqualTo("System usage for 4 - 7"); + assertThat(captor.getValue()).isNotEqualTo("System usage for past 24 hr"); } @Test @@ -722,9 +689,6 @@ public final class BatteryChartPreferenceControllerTest { new long[] {1619196786769L, 0L, 1619247636826L}; ConvertUtils.utcToLocalTimeHour( mContext, /*timestamp=*/ 0, /*is24HourFormat=*/ false); - // Simulates the locale in GMT. - ConvertUtils.sSimpleDateFormatForHour - .setTimeZone(TimeZone.getTimeZone("GMT")); } private BatteryChartPreferenceController createController() { diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryChartViewTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryChartViewTest.java index d19a012812e..0b75e798423 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryChartViewTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryChartViewTest.java @@ -33,7 +33,6 @@ import android.view.accessibility.AccessibilityManager; import com.android.settings.testutils.FakeFeatureFactory; import org.junit.Before; -import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; @@ -44,7 +43,6 @@ import org.robolectric.RuntimeEnvironment; import java.util.Arrays; import java.util.ArrayList; import java.util.Locale; -import java.util.TimeZone; @RunWith(RobolectricTestRunner.class) public final class BatteryChartViewTest { @@ -233,21 +231,4 @@ public final class BatteryChartViewTest { verify(mBatteryChartView.mHandler) .postDelayed(mBatteryChartView.mUpdateClickableStateRun, 500L); } - - @Ignore - @Test - public void testSetLatestTimestamp_generateExpectedTimestamps() { - final long timestamp = 1619196786769L; - ConvertUtils.sSimpleDateFormatForHour = null; - // Invokes the method first to create the SimpleDateFormat. - ConvertUtils.utcToLocalTimeHour( - mContext, /*timestamp=*/ 0, /*is24HourFormat=*/ false); - ConvertUtils.sSimpleDateFormatForHour - .setTimeZone(TimeZone.getTimeZone("America/Los_Angeles")); - final String[] expectedTimestamps = new String[] {"00", "06", "12", "18", "00"}; - - mBatteryChartView.setLatestTimestamp(timestamp); - - assertThat(mBatteryChartView.mTimestamps).isEqualTo(expectedTimestamps); - } } diff --git a/tests/robotests/src/com/android/settings/fuelgauge/ConvertUtilsTest.java b/tests/robotests/src/com/android/settings/fuelgauge/ConvertUtilsTest.java index 0b1a1e31642..8ae50489216 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/ConvertUtilsTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/ConvertUtilsTest.java @@ -30,7 +30,6 @@ import android.os.UserHandle; import com.android.settings.testutils.FakeFeatureFactory; import org.junit.Before; -import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; @@ -317,71 +316,6 @@ public final class ConvertUtilsTest { .isEqualTo(entry.mConsumePower * ratio); } - @Ignore - @Test - public void testUtcToLocalTime_returnExpectedResult() { - ConvertUtils.sZoneId = null; - ConvertUtils.sLocale = null; - final long timestamp = 1619196786769L; - final String expectedZoneId = "America/Los_Angeles"; - ConvertUtils.sSimpleDateFormat = null; - // Invokes the method first to create the SimpleDateFormat. - ConvertUtils.utcToLocalTime(mContext, /*timestamp=*/ 0); - ConvertUtils.sSimpleDateFormat - .setTimeZone(TimeZone.getTimeZone(expectedZoneId)); - mContext.getResources().getConfiguration().setLocales( - new LocaleList(new Locale("en_US"))); - - assertThat(ConvertUtils.utcToLocalTime(mContext, timestamp)) - .isEqualTo("Apr 24,2021 00:53:06"); - assertThat(ConvertUtils.sZoneId).isNotEqualTo(expectedZoneId); - assertThat(ConvertUtils.sLocale).isEqualTo(new Locale("en_US")); - } - - @Ignore - @Test - public void testUtcToLocalTimeHour_12HourFormat_returnExpectedResult() { - ConvertUtils.sZoneIdForHour = null; - ConvertUtils.sLocaleForHour = null; - final long timestamp = 1619000086769L; - final String expectedZoneId = "America/Los_Angeles"; - ConvertUtils.sSimpleDateFormatForHour = null; - // Invokes the method first to create the SimpleDateFormat. - ConvertUtils.utcToLocalTimeHour( - mContext, /*timestamp=*/ 0, /*is24HourFormat=*/ false); - ConvertUtils.sSimpleDateFormatForHour - .setTimeZone(TimeZone.getTimeZone(expectedZoneId)); - mContext.getResources().getConfiguration().setLocales( - new LocaleList(new Locale("en_US"))); - - assertThat(ConvertUtils.utcToLocalTimeHour( - mContext, timestamp, /*is24HourFormat=*/ false)).isEqualTo("6"); - assertThat(ConvertUtils.sZoneIdForHour).isNotEqualTo(expectedZoneId); - assertThat(ConvertUtils.sLocaleForHour).isEqualTo(new Locale("en_US")); - } - - @Ignore - @Test - public void testUtcToLocalTimeHour_24HourFormat_returnExpectedResult() { - ConvertUtils.sZoneIdForHour = null; - ConvertUtils.sLocaleForHour = null; - final long timestamp = 1619000086769L; - final String expectedZoneId = "America/Los_Angeles"; - ConvertUtils.sSimpleDateFormatForHour = null; - // Invokes the method first to create the SimpleDateFormat. - ConvertUtils.utcToLocalTimeHour( - mContext, /*timestamp=*/ 0, /*is24HourFormat=*/ false); - ConvertUtils.sSimpleDateFormatForHour - .setTimeZone(TimeZone.getTimeZone(expectedZoneId)); - mContext.getResources().getConfiguration().setLocales( - new LocaleList(new Locale("en_US"))); - - assertThat(ConvertUtils.utcToLocalTimeHour( - mContext, timestamp, /*is24HourFormat=*/ true)).isEqualTo("18"); - assertThat(ConvertUtils.sZoneIdForHour).isNotEqualTo(expectedZoneId); - assertThat(ConvertUtils.sLocaleForHour).isEqualTo(new Locale("en_US")); - } - @Test public void getLocale_nullContext_returnDefaultLocale() { assertThat(ConvertUtils.getLocale(/*context=*/ null))