Hide summary for Google app in battery usage

"Google" app is quicksearchbox which always has a foreground service running.
This causes it shows a huge usage time.
So, we make the summary invisible now.

Test: Rebuild and visual
Change-Id: Iba8083cc058e1d391dc20610fb6eb140c2c25350
Fix: 144063003
This commit is contained in:
Tsung-Mao Fang
2019-12-10 12:29:32 +08:00
parent 5a4e364475
commit cb8dbbeac2
3 changed files with 33 additions and 7 deletions

View File

@@ -1436,4 +1436,10 @@
<item>@string/enhanced_4g_lte_mode_summary_4g_calling</item> <item>@string/enhanced_4g_lte_mode_summary_4g_calling</item>
</string-array> </string-array>
<!-- A whitelist which packages won't show summary in battery usage screen. [CHAR LIMIT=NONE] -->
<string-array name="whitelist_hide_summary_in_battery_usage" translatable="false">
<!-- Google -->
<item>"com.google.android.googlequicksearchbox"</item>
</string-array>
</resources> </resources>

View File

@@ -338,7 +338,7 @@ public class BatteryAppListPreferenceController extends AbstractPreferenceContro
void setUsageSummary(Preference preference, BatterySipper sipper) { void setUsageSummary(Preference preference, BatterySipper sipper) {
// Only show summary when usage time is longer than one minute // Only show summary when usage time is longer than one minute
final long usageTimeMs = sipper.usageTimeMs; final long usageTimeMs = sipper.usageTimeMs;
if (usageTimeMs >= DateUtils.MINUTE_IN_MILLIS) { if (shouldShowSummary(sipper) && usageTimeMs >= DateUtils.MINUTE_IN_MILLIS) {
final CharSequence timeSequence = final CharSequence timeSequence =
StringUtil.formatElapsedTime(mContext, usageTimeMs, false); StringUtil.formatElapsedTime(mContext, usageTimeMs, false);
preference.setSummary( preference.setSummary(
@@ -390,6 +390,19 @@ public class BatteryAppListPreferenceController extends AbstractPreferenceContro
} }
} }
private boolean shouldShowSummary(BatterySipper sipper) {
final CharSequence[] whitelistPackages = mContext.getResources()
.getTextArray(R.array.whitelist_hide_summary_in_battery_usage);
final String target = sipper.packageWithHighestDrain;
for (CharSequence packageName: whitelistPackages) {
if (TextUtils.equals(target, packageName)) {
return false;
}
}
return true;
}
private static boolean isSharedGid(int uid) { private static boolean isSharedGid(int uid) {
return UserHandle.getAppIdFromSharedAppGid(uid) > 0; return UserHandle.getAppIdFromSharedAppGid(uid) > 0;
} }

View File

@@ -25,7 +25,6 @@ import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import android.content.Context; import android.content.Context;
import android.content.pm.ModuleInfo;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.os.BatteryStats; import android.os.BatteryStats;
import android.os.UserManager; import android.os.UserManager;
@@ -40,7 +39,6 @@ import com.android.settings.R;
import com.android.settings.SettingsActivity; import com.android.settings.SettingsActivity;
import com.android.settings.core.InstrumentedPreferenceFragment; import com.android.settings.core.InstrumentedPreferenceFragment;
import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settingslib.applications.ApplicationsState;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@@ -49,10 +47,6 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment; import org.robolectric.RuntimeEnvironment;
import org.robolectric.util.ReflectionHelpers;
import java.util.ArrayList;
import java.util.List;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public class BatteryAppListPreferenceControllerTest { public class BatteryAppListPreferenceControllerTest {
@@ -161,6 +155,19 @@ public class BatteryAppListPreferenceControllerTest {
assertThat(mPreference.getSummary().toString()).isEqualTo("Used for 2 min"); assertThat(mPreference.getSummary().toString()).isEqualTo("Used for 2 min");
} }
@Test
public void testSetUsageSummary_timeMoreThanOneMinute_GoogleApp_shouldNotSetScreenSummary() {
mNormalBatterySipper.usageTimeMs = 2 * DateUtils.MINUTE_IN_MILLIS;
mNormalBatterySipper.packageWithHighestDrain = "com.google.android.googlequicksearchbox";
doReturn(mContext.getText(R.string.battery_used_for)).when(mFragment).getText(
R.string.battery_used_for);
doReturn(mContext).when(mFragment).getContext();
mPreferenceController.setUsageSummary(mPreference, mNormalBatterySipper);
assertThat(mPreference.getSummary()).isNull();
}
@Test @Test
public void testSetUsageSummary_timeMoreThanOneMinute_hiddenApp_setUsedSummary() { public void testSetUsageSummary_timeMoreThanOneMinute_hiddenApp_setUsedSummary() {
mNormalBatterySipper.usageTimeMs = 2 * DateUtils.MINUTE_IN_MILLIS; mNormalBatterySipper.usageTimeMs = 2 * DateUtils.MINUTE_IN_MILLIS;