Add title and summary for "High usage" pref.

The logic for this pref lives in AnomalyPreferenceController.

Bug: 36924669
Test: RunSettingsRoboTest
Change-Id: Ib88d8e76e1af8a2270fcb671baf55e9f6564b96e
This commit is contained in:
jackqdyulei
2017-04-27 19:32:54 -07:00
parent 14d24c998e
commit 59bc0cc7e7
5 changed files with 53 additions and 19 deletions

View File

@@ -7410,11 +7410,11 @@
<!-- Title for high usage item, which means power high usage [CHAR LIMIT=30] -->
<string name="power_high_usage_title">High usage</string>
<!-- Summary for high usage item, showing one app is behaving abnormally [CHAR LIMIT=80] -->
<string name="power_high_usage_summary"><xliff:g id="app">%1$s</xliff:g> behaving abnormally</string>
<!-- Summary for high usage item, showing several apps are behaving abnormally [CHAR LIMIT=80] -->
<string name="power_high_usage_multiple_apps_summary"><xliff:g id="number">%1$d</xliff:g> apps behaving abnormally</string>
<!-- Summary for high usage item, showing app/apps are behaving abnormally [CHAR LIMIT=80] -->
<plurals name="power_high_usage_summary">
<item quantity="one"><xliff:g id="app">%1$s</xliff:g> behaving abnormally</item>
<item quantity="other"><xliff:g id="number">%2$d</xliff:g> apps behaving abnormally</item>
</plurals>
<!-- Filter for apps allowed to use a lot of power [CHAR LIMIT=25] -->
<string name="high_power_filter_on">Not optimized</string>

View File

@@ -26,7 +26,8 @@
android:layout="@layout/battery_header"/>
<Preference
android:key="high_usage"/>
android:key="high_usage"
android:title="@string/power_high_usage_title"/>
<PreferenceCategory
android:key="device_usage_list">

View File

@@ -139,7 +139,7 @@ public class PowerUsageSummary extends PowerUsageBase implements
@Override
public void onLoadFinished(Loader<List<Anomaly>> loader, List<Anomaly> data) {
// show high usage preference if possible
mAnomalySummaryPreferenceController.updateHighUsagePreference(data);
mAnomalySummaryPreferenceController.updateAnomalySummaryPreference(data);
}
@Override

View File

@@ -16,10 +16,12 @@
package com.android.settings.fuelgauge.anomaly;
import android.content.Context;
import android.support.annotation.VisibleForTesting;
import android.support.v14.preference.PreferenceFragment;
import android.support.v7.preference.Preference;
import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.fuelgauge.PowerUsageAnomalyDetails;
@@ -70,12 +72,18 @@ public class AnomalySummaryPreferenceController {
*
* @param anomalies used to update the summary, this method will store a reference of it
*/
public void updateHighUsagePreference(List<Anomaly> anomalies) {
public void updateAnomalySummaryPreference(List<Anomaly> anomalies) {
final Context context = mFragment.getContext();
mAnomalies = anomalies;
if (!mAnomalies.isEmpty()) {
mAnomalyPreference.setVisible(true);
//TODO(b/36924669): update summary for anomaly preference
final int count = mAnomalies.size();
final String summary = context.getResources().getQuantityString(
R.plurals.power_high_usage_summary, count,
mAnomalies.get(0).displayName, count);
mAnomalyPreference.setSummary(summary);
}
}

View File

@@ -53,6 +53,7 @@ public class AnomalySummaryPreferenceControllerTest {
@Anomaly.AnomalyType
private static final int ANOMALY_TYPE = Anomaly.AnomalyType.WAKE_LOCK;
private static final String PACKAGE_NAME = "com.android.app";
private static final String DISPLAY_NAME = "app";
private static final int UID = 111;
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
@@ -75,32 +76,47 @@ public class AnomalySummaryPreferenceControllerTest {
mContext = RuntimeEnvironment.application;
mPreference = new Preference(mContext);
mPreference.setKey(AnomalySummaryPreferenceController.ANOMALY_KEY);
when(mFragment.getPreferenceManager().findPreference(any())).thenReturn(mPreference);
when(mFragment.getPreferenceScreen().findPreference(any())).thenReturn(mPreference);
when(mFragment.getFragmentManager()).thenReturn(mFragmentManager);
when(mFragmentManager.beginTransaction()).thenReturn(mFragmentTransaction);
when(mFragment.getContext()).thenReturn(mContext);
mAnomalyList = new ArrayList<>();
Anomaly anomaly = new Anomaly.Builder()
.setType(ANOMALY_TYPE)
.setUid(UID)
.setPackageName(PACKAGE_NAME)
.build();
mAnomalyList.add(anomaly);
mAnomalySummaryPreferenceController = new AnomalySummaryPreferenceController(
mSettingsActivity, mFragment);
}
@Test
public void testUpdateHighUsagePreference_hasCorrectData() {
mAnomalySummaryPreferenceController.updateHighUsagePreference(mAnomalyList);
public void testUpdateHighUsageSummaryPreference_hasCorrectData() {
mAnomalySummaryPreferenceController.updateAnomalySummaryPreference(mAnomalyList);
//add more test when this method is complete
assertThat(mAnomalySummaryPreferenceController.mAnomalies).isEqualTo(mAnomalyList);
}
@Test
public void testUpdateAnomalySummaryPreference_oneAnomaly_showCorrectSummary() {
mAnomalyList.add(createTestAnomaly());
mAnomalySummaryPreferenceController.updateAnomalySummaryPreference(mAnomalyList);
assertThat(mPreference.getSummary()).isEqualTo("app behaving abnormally");
}
@Test
public void testUpdateAnomalySummaryPreference_multipleAnomalies_showCorrectSummary() {
mAnomalyList.add(createTestAnomaly());
mAnomalyList.add(createTestAnomaly());
mAnomalySummaryPreferenceController.updateAnomalySummaryPreference(mAnomalyList);
assertThat(mPreference.getSummary()).isEqualTo("2 apps behaving abnormally");
}
@Test
public void testOnPreferenceTreeClick_oneAnomaly_showDialog() {
mAnomalyList.add(createTestAnomaly());
mAnomalySummaryPreferenceController.mAnomalies = mAnomalyList;
mAnomalySummaryPreferenceController.onPreferenceTreeClick(mPreference);
@@ -110,4 +126,13 @@ public class AnomalySummaryPreferenceControllerTest {
verify(mFragmentTransaction).commit();
}
private Anomaly createTestAnomaly() {
return new Anomaly.Builder()
.setType(ANOMALY_TYPE)
.setUid(UID)
.setPackageName(PACKAGE_NAME)
.setDisplayName(DISPLAY_NAME)
.build();
}
}