diff --git a/res/layout/power_usage_time.xml b/res/layout/power_usage_time.xml
deleted file mode 100644
index bad68f4517f..00000000000
--- a/res/layout/power_usage_time.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-
-
-
-
The battery usage info could be usage percentage or usage time. The preference won't show any * icon if it is null. */ -public class PowerGaugePreference extends AppPreference { +public class PowerGaugePreference extends WarningFramePreference { // Please see go/battery-usage-app-list-alpha private static final float SELECTABLE_ALPHA = 1f; @@ -51,7 +51,6 @@ public class PowerGaugePreference extends AppPreference { private CharSequence mContentDescription; private CharSequence mProgress; private CharSequence mProgressContentDescription; - private boolean mShowAnomalyIcon; public PowerGaugePreference( Context context, Drawable icon, CharSequence contentDescription, BatteryEntry info) { @@ -79,7 +78,6 @@ public class PowerGaugePreference extends AppPreference { setWidgetLayoutResource(R.layout.preference_widget_summary); mInfo = info; mContentDescription = contentDescription; - mShowAnomalyIcon = false; mTitleColorNormal = Utils.getColorAttrDefaultColor(context, android.R.attr.textColorPrimary); } @@ -108,17 +106,6 @@ public class PowerGaugePreference extends AppPreference { return mProgress.toString(); } - /** Sets whether to show anomaly icon */ - public void shouldShowAnomalyIcon(boolean showAnomalyIcon) { - mShowAnomalyIcon = showAnomalyIcon; - notifyChanged(); - } - - /** Gets whether to show anomaly icon */ - public boolean showAnomalyIcon() { - return mShowAnomalyIcon; - } - public void setBatteryDiffEntry(BatteryDiffEntry entry) { mBatteryDiffEntry = entry; } @@ -149,12 +136,6 @@ public class PowerGaugePreference extends AppPreference { if (!TextUtils.isEmpty(mProgressContentDescription)) { subtitle.setContentDescription(mProgressContentDescription); } - if (mShowAnomalyIcon) { - subtitle.setCompoundDrawablesRelativeWithIntrinsicBounds( - R.drawable.ic_warning_24dp, 0, 0, 0); - } else { - subtitle.setCompoundDrawablesRelativeWithIntrinsicBounds(0, 0, 0, 0); - } if (mContentDescription != null) { final TextView titleView = (TextView) view.findViewById(android.R.id.title); titleView.setContentDescription(mContentDescription); diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageTimeControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageTimeControllerTest.java index e8eb1260bcd..60ece9df424 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageTimeControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageTimeControllerTest.java @@ -99,9 +99,9 @@ public final class PowerUsageTimeControllerTest { /* anomalyHintText= */ null); verifyOnePreferenceInvisible(mBackgroundTimePreference); - verify(mScreenTimePreference).setTimeTitle("Screen time"); - verify(mScreenTimePreference).setTimeSummary("1 min"); - verify(mScreenTimePreference, never()).setAnomalyHint(anyString()); + verify(mScreenTimePreference).setTitle("Screen time"); + verify(mScreenTimePreference).setSummary("1 min"); + verify(mScreenTimePreference, never()).setHint(anyString()); } @Test @@ -117,9 +117,9 @@ public final class PowerUsageTimeControllerTest { /* anomalyHintText= */ null); verifyOnePreferenceInvisible(mScreenTimePreference); - verify(mBackgroundTimePreference).setTimeTitle("Background time"); - verify(mBackgroundTimePreference).setTimeSummary("2 min"); - verify(mBackgroundTimePreference, never()).setAnomalyHint(anyString()); + verify(mBackgroundTimePreference).setTitle("Background time"); + verify(mBackgroundTimePreference).setSummary("2 min"); + verify(mBackgroundTimePreference, never()).setHint(anyString()); } @Test @@ -135,12 +135,12 @@ public final class PowerUsageTimeControllerTest { /* anomalyHintText= */ null); verifyAllPreferencesVisible(true); - verify(mScreenTimePreference).setTimeTitle("Screen time"); - verify(mScreenTimePreference).setTimeSummary("1 min"); - verify(mScreenTimePreference, never()).setAnomalyHint(anyString()); - verify(mBackgroundTimePreference).setTimeTitle("Background time"); - verify(mBackgroundTimePreference).setTimeSummary("2 min"); - verify(mBackgroundTimePreference, never()).setAnomalyHint(anyString()); + verify(mScreenTimePreference).setTitle("Screen time"); + verify(mScreenTimePreference).setSummary("1 min"); + verify(mScreenTimePreference, never()).setHint(anyString()); + verify(mBackgroundTimePreference).setTitle("Background time"); + verify(mBackgroundTimePreference).setSummary("2 min"); + verify(mBackgroundTimePreference, never()).setHint(anyString()); verify(mPowerUsageTimeCategory).setTitle("App usage for 12 am-2 am"); } @@ -173,8 +173,8 @@ public final class PowerUsageTimeControllerTest { /* anomalyHintText= */ null); verifyAllPreferencesVisible(true); - verify(mScreenTimePreference).setTimeSummary("1 min"); - verify(mBackgroundTimePreference).setTimeSummary("Less than a minute"); + verify(mScreenTimePreference).setSummary("1 min"); + verify(mBackgroundTimePreference).setSummary("Less than a minute"); } @Test @@ -190,8 +190,8 @@ public final class PowerUsageTimeControllerTest { /* anomalyHintText= */ null); verifyAllPreferencesVisible(true); - verify(mScreenTimePreference).setTimeSummary("Less than a minute"); - verify(mBackgroundTimePreference).setTimeSummary("2 min"); + verify(mScreenTimePreference).setSummary("Less than a minute"); + verify(mBackgroundTimePreference).setSummary("2 min"); } @Test @@ -207,8 +207,8 @@ public final class PowerUsageTimeControllerTest { /* anomalyHintText= */ null); verifyAllPreferencesVisible(true); - verify(mScreenTimePreference).setTimeSummary("Less than a minute"); - verify(mBackgroundTimePreference).setTimeSummary("Less than a minute"); + verify(mScreenTimePreference).setSummary("Less than a minute"); + verify(mBackgroundTimePreference).setSummary("Less than a minute"); } @Test @@ -224,8 +224,8 @@ public final class PowerUsageTimeControllerTest { TEST_ANOMALY_HINT_TEXT); verifyAllPreferencesVisible(true); - verify(mScreenTimePreference).setAnomalyHint(TEST_ANOMALY_HINT_TEXT); - verify(mBackgroundTimePreference, never()).setAnomalyHint(anyString()); + verify(mScreenTimePreference).setHint(TEST_ANOMALY_HINT_TEXT); + verify(mBackgroundTimePreference, never()).setHint(anyString()); } @Test @@ -241,8 +241,8 @@ public final class PowerUsageTimeControllerTest { TEST_ANOMALY_HINT_TEXT); verifyAllPreferencesVisible(true); - verify(mScreenTimePreference, never()).setAnomalyHint(anyString()); - verify(mBackgroundTimePreference).setAnomalyHint(TEST_ANOMALY_HINT_TEXT); + verify(mScreenTimePreference, never()).setHint(anyString()); + verify(mBackgroundTimePreference).setHint(TEST_ANOMALY_HINT_TEXT); } @Test @@ -258,9 +258,9 @@ public final class PowerUsageTimeControllerTest { TEST_ANOMALY_HINT_TEXT); verifyAllPreferencesVisible(true); - verify(mScreenTimePreference).setTimeSummary("Less than a minute"); - verify(mScreenTimePreference).setAnomalyHint(TEST_ANOMALY_HINT_TEXT); - verify(mBackgroundTimePreference, never()).setAnomalyHint(anyString()); + verify(mScreenTimePreference).setSummary("Less than a minute"); + verify(mScreenTimePreference).setHint(TEST_ANOMALY_HINT_TEXT); + verify(mBackgroundTimePreference, never()).setHint(anyString()); } private void verifySetPrefToVisible(Preference pref, boolean isVisible) { diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java index c4cbb988ae6..7ad7c491239 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java @@ -67,7 +67,7 @@ public final class BatteryUsageBreakdownControllerTest { @Mock private PreferenceGroup mRootPreferenceGroup; @Mock private Drawable mDrawable; @Mock private BatteryHistEntry mBatteryHistEntry; - @Mock private AnomalyAppItemPreference mAnomalyAppItemPreference; + @Mock private PowerGaugePreference mPowerGaugePreference; private Context mContext; private FakeFeatureFactory mFeatureFactory; @@ -131,13 +131,13 @@ public final class BatteryUsageBreakdownControllerTest { BatteryDiffEntry.sResourceCache.put( "fakeBatteryDiffEntryKey", new BatteryEntry.NameAndIcon("fakeName", /* icon= */ null, /* iconId= */ 1)); - doReturn(mAnomalyAppItemPreference).when(mRootPreferenceGroup).findPreference(PREF_KEY); + doReturn(mPowerGaugePreference).when(mRootPreferenceGroup).findPreference(PREF_KEY); } @Test public void onDestroy_clearPreferenceCacheAndPreferenceGroupRemoveAll() { // Ensures the testing environment is correct. - mBatteryUsageBreakdownController.mPreferenceCache.put(PREF_KEY, mAnomalyAppItemPreference); + mBatteryUsageBreakdownController.mPreferenceCache.put(PREF_KEY, mPowerGaugePreference); assertThat(mBatteryUsageBreakdownController.mPreferenceCache).hasSize(1); mBatteryUsageBreakdownController.onDestroy(); @@ -204,25 +204,25 @@ public final class BatteryUsageBreakdownControllerTest { @Test public void removeAndCacheAllUnusedPreferences_removePref_buildCacheAndRemoveAllPreference() { doReturn(1).when(mRootPreferenceGroup).getPreferenceCount(); - doReturn(mAnomalyAppItemPreference).when(mRootPreferenceGroup).getPreference(0); + doReturn(mPowerGaugePreference).when(mRootPreferenceGroup).getPreference(0); doReturn(PREF_KEY2).when(mBatteryHistEntry).getKey(); - doReturn(PREF_KEY).when(mAnomalyAppItemPreference).getKey(); + doReturn(PREF_KEY).when(mPowerGaugePreference).getKey(); // Ensures the testing data is correct. assertThat(mBatteryUsageBreakdownController.mPreferenceCache).isEmpty(); mBatteryUsageBreakdownController.removeAndCacheAllUnusedPreferences(); assertThat(mBatteryUsageBreakdownController.mPreferenceCache.get(PREF_KEY)) - .isEqualTo(mAnomalyAppItemPreference); - verify(mRootPreferenceGroup).removePreference(mAnomalyAppItemPreference); + .isEqualTo(mPowerGaugePreference); + verify(mRootPreferenceGroup).removePreference(mPowerGaugePreference); } @Test public void removeAndCacheAllUnusedPreferences_keepPref_KeepAllPreference() { doReturn(1).when(mRootPreferenceGroup).getPreferenceCount(); - doReturn(mAnomalyAppItemPreference).when(mRootPreferenceGroup).getPreference(0); + doReturn(mPowerGaugePreference).when(mRootPreferenceGroup).getPreference(0); doReturn(PREF_KEY).when(mBatteryDiffEntry).getKey(); - doReturn(PREF_KEY).when(mAnomalyAppItemPreference).getKey(); + doReturn(PREF_KEY).when(mPowerGaugePreference).getKey(); // Ensures the testing data is correct. assertThat(mBatteryUsageBreakdownController.mPreferenceCache).isEmpty(); @@ -246,11 +246,11 @@ public final class BatteryUsageBreakdownControllerTest { @Test public void handlePreferenceTreeClick_forAppEntry_returnTrue() { mBatteryDiffEntry.mConsumerType = ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY; - doReturn(mBatteryDiffEntry).when(mAnomalyAppItemPreference).getBatteryDiffEntry(); + doReturn(mBatteryDiffEntry).when(mPowerGaugePreference).getBatteryDiffEntry(); assertThat( mBatteryUsageBreakdownController.handlePreferenceTreeClick( - mAnomalyAppItemPreference)) + mPowerGaugePreference)) .isTrue(); verify(mMetricsFeatureProvider) .action( @@ -264,11 +264,11 @@ public final class BatteryUsageBreakdownControllerTest { @Test public void handlePreferenceTreeClick_forSystemEntry_returnTrue() { mBatteryDiffEntry.mConsumerType = ConvertUtils.CONSUMER_TYPE_UID_BATTERY; - doReturn(mBatteryDiffEntry).when(mAnomalyAppItemPreference).getBatteryDiffEntry(); + doReturn(mBatteryDiffEntry).when(mPowerGaugePreference).getBatteryDiffEntry(); assertThat( mBatteryUsageBreakdownController.handlePreferenceTreeClick( - mAnomalyAppItemPreference)) + mPowerGaugePreference)) .isTrue(); verify(mMetricsFeatureProvider) .action( diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreferenceTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreferenceTest.java index f64ef495aeb..0bad0a0943c 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreferenceTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreferenceTest.java @@ -19,19 +19,20 @@ import static com.google.common.truth.Truth.assertThat; import android.content.Context; import android.graphics.drawable.Drawable; -import android.graphics.drawable.VectorDrawable; import android.view.LayoutInflater; import android.view.View; import android.widget.LinearLayout; -import android.widget.TextView; +import android.widget.Space; import androidx.preference.PreferenceViewHolder; import com.android.settings.R; +import com.android.settingslib.widget.SettingsThemeHelper; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; @@ -48,17 +49,17 @@ public class PowerGaugePreferenceTest { private View mWidgetView; private PreferenceViewHolder mPreferenceViewHolder; + @Mock Drawable mMockIcon; + @Before public void setUp() { MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application; + mPowerGaugePreference = new PowerGaugePreference(mContext); mRootView = LayoutInflater.from(mContext) - .inflate( - com.android.settingslib.widget.preference.app.R.layout - .preference_app, - null); + .inflate(mPowerGaugePreference.getLayoutResource(), null); mWidgetView = LayoutInflater.from(mContext).inflate(R.layout.preference_widget_summary, null); final LinearLayout widgetFrame = mRootView.findViewById(android.R.id.widget_frame); @@ -66,31 +67,56 @@ public class PowerGaugePreferenceTest { widgetFrame.addView(mWidgetView); mPreferenceViewHolder = PreferenceViewHolder.createInstanceForTests(mRootView); - mPowerGaugePreference = new PowerGaugePreference(mContext); assertThat(mPowerGaugePreference.getLayoutResource()) - .isEqualTo(com.android.settingslib.widget.preference.app.R.layout.preference_app); + .isEqualTo( + SettingsThemeHelper.isExpressiveTheme(mContext) + ? R.layout.expressive_warning_frame_preference + : R.layout.warning_frame_preference); } @Test - public void testOnBindViewHolder_showAnomaly_bindAnomalyIcon() { - mPowerGaugePreference.shouldShowAnomalyIcon(true); + public void testOnBindViewHolder_showHint_hasHintChip() { + mPowerGaugePreference.setHint("Hint Text"); + mPowerGaugePreference.setIcon(mMockIcon); mPowerGaugePreference.onBindViewHolder(mPreferenceViewHolder); - TextView widgetSummary = (TextView) mPreferenceViewHolder.findViewById(R.id.widget_summary); - final Drawable[] drawables = widgetSummary.getCompoundDrawablesRelative(); + final LinearLayout warningChipFrame = + (LinearLayout) mPreferenceViewHolder.findViewById(R.id.warning_chip_frame); + final Space warningPaddingPlaceHolder = + warningChipFrame.findViewById(R.id.warning_padding_placeholder); - assertThat(drawables[0]).isInstanceOf(VectorDrawable.class); + assertThat(warningChipFrame.getVisibility()).isEqualTo(View.VISIBLE); + assertThat(warningPaddingPlaceHolder.getVisibility()).isEqualTo(View.VISIBLE); } @Test - public void testOnBindViewHolder_notShowAnomaly_bindAnomalyIcon() { - mPowerGaugePreference.shouldShowAnomalyIcon(false); + public void testOnBindViewHolder_emptyHintText_withoutHintChip() { + mPowerGaugePreference.setHint(""); + mPowerGaugePreference.setIcon(mMockIcon); mPowerGaugePreference.onBindViewHolder(mPreferenceViewHolder); - TextView widgetSummary = (TextView) mPreferenceViewHolder.findViewById(R.id.widget_summary); - final Drawable[] drawables = widgetSummary.getCompoundDrawablesRelative(); + final LinearLayout warningChipFrame = + (LinearLayout) mPreferenceViewHolder.findViewById(R.id.warning_chip_frame); + final Space warningPaddingPlaceholder = + warningChipFrame.findViewById(R.id.warning_padding_placeholder); - assertThat(drawables[0]).isNull(); + assertThat(warningChipFrame.getVisibility()).isEqualTo(View.GONE); + assertThat(warningPaddingPlaceholder.getVisibility()).isEqualTo(View.VISIBLE); + } + + @Test + public void testOnBindViewHolder_noAppIconWithHintText_hasChipWithoutPaddingPlaceholder() { + mPowerGaugePreference.setHint("Anomaly Hint Text"); + mPowerGaugePreference.setIcon(null); + mPowerGaugePreference.onBindViewHolder(mPreferenceViewHolder); + + final LinearLayout warningChipFrame = + (LinearLayout) mPreferenceViewHolder.findViewById(R.id.warning_chip_frame); + final Space warningPaddingPlaceHolder = + warningChipFrame.findViewById(R.id.warning_padding_placeholder); + + assertThat(warningChipFrame.getVisibility()).isEqualTo(View.VISIBLE); + assertThat(warningPaddingPlaceHolder.getVisibility()).isEqualTo(View.GONE); } @Test