Merge changes from topic "improve_battery_usage" into main
* changes: [Expressive Battery] Implement the expressive style for anomaly hint chip [Expressive Battery] Refactor pref with anomaly hint.
This commit is contained in:
@@ -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) {
|
||||
|
@@ -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(
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user