Loading res/values/strings.xml +5 −5 Original line number Diff line number Diff line Loading @@ -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> res/xml/power_usage_summary.xml +2 −1 Original line number Diff line number Diff line Loading @@ -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"> Loading src/com/android/settings/fuelgauge/PowerUsageSummary.java +1 −1 Original line number Diff line number Diff line Loading @@ -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 Loading src/com/android/settings/fuelgauge/anomaly/AnomalySummaryPreferenceController.java +10 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); } } Loading tests/robotests/src/com/android/settings/fuelgauge/anomaly/AnomalySummaryPreferenceControllerTest.java +35 −10 Original line number Diff line number Diff line Loading @@ -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) Loading @@ -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); Loading @@ -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(); } } Loading
res/values/strings.xml +5 −5 Original line number Diff line number Diff line Loading @@ -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>
res/xml/power_usage_summary.xml +2 −1 Original line number Diff line number Diff line Loading @@ -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"> Loading
src/com/android/settings/fuelgauge/PowerUsageSummary.java +1 −1 Original line number Diff line number Diff line Loading @@ -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 Loading
src/com/android/settings/fuelgauge/anomaly/AnomalySummaryPreferenceController.java +10 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); } } Loading
tests/robotests/src/com/android/settings/fuelgauge/anomaly/AnomalySummaryPreferenceControllerTest.java +35 −10 Original line number Diff line number Diff line Loading @@ -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) Loading @@ -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); Loading @@ -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(); } }