Hide running time for "Android System" in the optimization page
Hide the running time information for "Android System" entry, since this entry will combine multiple system components together. It will provide incorrect running time information. The getRealUid() method maps many UIDs to Process.SYSTEM_UID(1000), which results in combining all of those UIDs into one "Android System" entry. This is the expected behavior. Bug: 220717612 Test: make RunSettingsRoboTests -j56 ROBOTEST_FILTER="com.android.settings.fuelgauge" Change-Id: I9d44fe8490ad5c684419b8ebf8d7d5576a42788a
This commit is contained in:
@@ -525,20 +525,24 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
|
|||||||
final long foregroundTimeMs = bundle.getLong(EXTRA_FOREGROUND_TIME);
|
final long foregroundTimeMs = bundle.getLong(EXTRA_FOREGROUND_TIME);
|
||||||
final long backgroundTimeMs = bundle.getLong(EXTRA_BACKGROUND_TIME);
|
final long backgroundTimeMs = bundle.getLong(EXTRA_BACKGROUND_TIME);
|
||||||
final int consumedPower = bundle.getInt(EXTRA_POWER_USAGE_AMOUNT);
|
final int consumedPower = bundle.getInt(EXTRA_POWER_USAGE_AMOUNT);
|
||||||
|
final int uid = bundle.getInt(EXTRA_UID, 0);
|
||||||
final String slotTime = bundle.getString(EXTRA_SLOT_TIME, null);
|
final String slotTime = bundle.getString(EXTRA_SLOT_TIME, null);
|
||||||
final long totalTimeMs = foregroundTimeMs + backgroundTimeMs;
|
final long totalTimeMs = foregroundTimeMs + backgroundTimeMs;
|
||||||
final CharSequence usageTimeSummary;
|
final CharSequence usageTimeSummary;
|
||||||
final PowerUsageFeatureProvider powerFeatureProvider =
|
final boolean isChartGraphEnabled = FeatureFactory.getFactory(getContext())
|
||||||
FeatureFactory.getFactory(getContext()).getPowerUsageFeatureProvider(getContext());
|
.getPowerUsageFeatureProvider(getContext()).isChartGraphEnabled(getContext());
|
||||||
|
|
||||||
|
if (!isChartGraphEnabled && BatteryEntry.isSystemUid(uid)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
if (totalTimeMs == 0) {
|
if (totalTimeMs == 0) {
|
||||||
final int batteryWithoutUsageTime = consumedPower > 0
|
final int batteryWithoutUsageTime = consumedPower > 0
|
||||||
? R.string.battery_usage_without_time : R.string.battery_not_usage_24hr;
|
? R.string.battery_usage_without_time : R.string.battery_not_usage_24hr;
|
||||||
usageTimeSummary = getText(powerFeatureProvider.isChartGraphEnabled(getContext())
|
usageTimeSummary = getText(isChartGraphEnabled
|
||||||
? batteryWithoutUsageTime : R.string.battery_not_usage);
|
? batteryWithoutUsageTime : R.string.battery_not_usage);
|
||||||
} else if (slotTime == null) {
|
} else if (slotTime == null) {
|
||||||
// Shows summary text with past 24 hr or full charge if slot time is null.
|
// Shows summary text with past 24 hr or full charge if slot time is null.
|
||||||
usageTimeSummary = powerFeatureProvider.isChartGraphEnabled(getContext())
|
usageTimeSummary = isChartGraphEnabled
|
||||||
? getAppPast24HrActiveSummary(foregroundTimeMs, backgroundTimeMs, totalTimeMs)
|
? getAppPast24HrActiveSummary(foregroundTimeMs, backgroundTimeMs, totalTimeMs)
|
||||||
: getAppFullChargeActiveSummary(
|
: getAppFullChargeActiveSummary(
|
||||||
foregroundTimeMs, backgroundTimeMs, totalTimeMs);
|
foregroundTimeMs, backgroundTimeMs, totalTimeMs);
|
||||||
|
@@ -434,7 +434,7 @@ public class BatteryAppListPreferenceController extends AbstractPreferenceContro
|
|||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
void setUsageSummary(Preference preference, BatteryEntry entry) {
|
void setUsageSummary(Preference preference, BatteryEntry entry) {
|
||||||
if (entry.getUid() == Process.SYSTEM_UID) {
|
if (BatteryEntry.isSystemUid(entry.getUid())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
String packageName = entry.getDefaultPackageName();
|
String packageName = entry.getDefaultPackageName();
|
||||||
|
@@ -612,7 +612,7 @@ public class BatteryEntry {
|
|||||||
return new NameAndIcon(name, null /* icon */, iconId);
|
return new NameAndIcon(name, null /* icon */, iconId);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean isSystemUid(int uid) {
|
static boolean isSystemUid(int uid) {
|
||||||
return uid == Process.SYSTEM_UID;
|
return uid == Process.SYSTEM_UID;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -43,6 +43,7 @@ import android.content.pm.PackageManager;
|
|||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.os.BatteryStats;
|
import android.os.BatteryStats;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.os.Process;
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
import android.util.Pair;
|
import android.util.Pair;
|
||||||
|
|
||||||
@@ -548,6 +549,7 @@ public class AdvancedPowerUsageDetailTest {
|
|||||||
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, backgroundTimeFourMinute);
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, backgroundTimeFourMinute);
|
||||||
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, foregroundTimeTwoMinutes);
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, foregroundTimeTwoMinutes);
|
||||||
when(mFragment.getArguments()).thenReturn(bundle);
|
when(mFragment.getArguments()).thenReturn(bundle);
|
||||||
|
|
||||||
mFragment.initHeader();
|
mFragment.initHeader();
|
||||||
|
|
||||||
ArgumentCaptor<CharSequence> captor = ArgumentCaptor.forClass(CharSequence.class);
|
ArgumentCaptor<CharSequence> captor = ArgumentCaptor.forClass(CharSequence.class);
|
||||||
@@ -560,7 +562,7 @@ public class AdvancedPowerUsageDetailTest {
|
|||||||
public void testInitHeader_totalUsageLessThanAMinWithSlotTime_hasCorrectSummary() {
|
public void testInitHeader_totalUsageLessThanAMinWithSlotTime_hasCorrectSummary() {
|
||||||
final long backgroundTimeLessThanHalfMinute = 20000;
|
final long backgroundTimeLessThanHalfMinute = 20000;
|
||||||
final long foregroundTimeLessThanHalfMinute = 20000;
|
final long foregroundTimeLessThanHalfMinute = 20000;
|
||||||
Bundle bundle = new Bundle(2);
|
Bundle bundle = new Bundle(3);
|
||||||
bundle.putLong(
|
bundle.putLong(
|
||||||
AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, backgroundTimeLessThanHalfMinute);
|
AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, backgroundTimeLessThanHalfMinute);
|
||||||
bundle.putLong(
|
bundle.putLong(
|
||||||
@@ -580,7 +582,7 @@ public class AdvancedPowerUsageDetailTest {
|
|||||||
public void testInitHeader_TotalAMinBackgroundLessThanAMinWithSlotTime_hasCorrectSummary() {
|
public void testInitHeader_TotalAMinBackgroundLessThanAMinWithSlotTime_hasCorrectSummary() {
|
||||||
final long backgroundTimeZero = 59999;
|
final long backgroundTimeZero = 59999;
|
||||||
final long foregroundTimeTwoMinutes = 1;
|
final long foregroundTimeTwoMinutes = 1;
|
||||||
Bundle bundle = new Bundle(2);
|
Bundle bundle = new Bundle(3);
|
||||||
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, backgroundTimeZero);
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, backgroundTimeZero);
|
||||||
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, foregroundTimeTwoMinutes);
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, foregroundTimeTwoMinutes);
|
||||||
bundle.putString(AdvancedPowerUsageDetail.EXTRA_SLOT_TIME, SLOT_TIME);
|
bundle.putString(AdvancedPowerUsageDetail.EXTRA_SLOT_TIME, SLOT_TIME);
|
||||||
@@ -598,7 +600,7 @@ public class AdvancedPowerUsageDetailTest {
|
|||||||
public void testInitHeader_TotalAMinBackgroundZeroWithSlotTime_hasCorrectSummary() {
|
public void testInitHeader_TotalAMinBackgroundZeroWithSlotTime_hasCorrectSummary() {
|
||||||
final long backgroundTimeZero = 0;
|
final long backgroundTimeZero = 0;
|
||||||
final long foregroundTimeAMinutes = 60000;
|
final long foregroundTimeAMinutes = 60000;
|
||||||
Bundle bundle = new Bundle(2);
|
Bundle bundle = new Bundle(3);
|
||||||
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, backgroundTimeZero);
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, backgroundTimeZero);
|
||||||
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, foregroundTimeAMinutes);
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, foregroundTimeAMinutes);
|
||||||
bundle.putString(AdvancedPowerUsageDetail.EXTRA_SLOT_TIME, SLOT_TIME);
|
bundle.putString(AdvancedPowerUsageDetail.EXTRA_SLOT_TIME, SLOT_TIME);
|
||||||
@@ -616,11 +618,12 @@ public class AdvancedPowerUsageDetailTest {
|
|||||||
public void testInitHeader_foregroundTwoMinBackgroundFourMinWithSlotTime_hasCorrectSummary() {
|
public void testInitHeader_foregroundTwoMinBackgroundFourMinWithSlotTime_hasCorrectSummary() {
|
||||||
final long backgroundTimeFourMinute = 240000;
|
final long backgroundTimeFourMinute = 240000;
|
||||||
final long foregroundTimeTwoMinutes = 120000;
|
final long foregroundTimeTwoMinutes = 120000;
|
||||||
Bundle bundle = new Bundle(2);
|
Bundle bundle = new Bundle(3);
|
||||||
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, backgroundTimeFourMinute);
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, backgroundTimeFourMinute);
|
||||||
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, foregroundTimeTwoMinutes);
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, foregroundTimeTwoMinutes);
|
||||||
bundle.putString(AdvancedPowerUsageDetail.EXTRA_SLOT_TIME, SLOT_TIME);
|
bundle.putString(AdvancedPowerUsageDetail.EXTRA_SLOT_TIME, SLOT_TIME);
|
||||||
when(mFragment.getArguments()).thenReturn(bundle);
|
when(mFragment.getArguments()).thenReturn(bundle);
|
||||||
|
|
||||||
mFragment.initHeader();
|
mFragment.initHeader();
|
||||||
|
|
||||||
ArgumentCaptor<CharSequence> captor = ArgumentCaptor.forClass(CharSequence.class);
|
ArgumentCaptor<CharSequence> captor = ArgumentCaptor.forClass(CharSequence.class);
|
||||||
@@ -629,6 +632,38 @@ public class AdvancedPowerUsageDetailTest {
|
|||||||
.isEqualTo("6 min total • 4 min background\nfor 12 am-2 am");
|
.isEqualTo("6 min total • 4 min background\nfor 12 am-2 am");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testInitHeader_systemUidWithChartIsDisabled_nullSummary() {
|
||||||
|
Bundle bundle = new Bundle(3);
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, 240000);
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, 120000);
|
||||||
|
bundle.putInt(AdvancedPowerUsageDetail.EXTRA_UID, Process.SYSTEM_UID);
|
||||||
|
when(mFragment.getArguments()).thenReturn(bundle);
|
||||||
|
when(mFeatureFactory.powerUsageFeatureProvider.isChartGraphEnabled(mContext))
|
||||||
|
.thenReturn(false);
|
||||||
|
|
||||||
|
mFragment.initHeader();
|
||||||
|
|
||||||
|
ArgumentCaptor<CharSequence> captor = ArgumentCaptor.forClass(CharSequence.class);
|
||||||
|
verify(mEntityHeaderController).setSummary(captor.capture());
|
||||||
|
assertThat(captor.getValue()).isNull();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testInitHeader_systemUidWithChartIsEnabled_notNullSummary() {
|
||||||
|
Bundle bundle = new Bundle(3);
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, 240000);
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, 120000);
|
||||||
|
bundle.putInt(AdvancedPowerUsageDetail.EXTRA_UID, Process.SYSTEM_UID);
|
||||||
|
when(mFragment.getArguments()).thenReturn(bundle);
|
||||||
|
|
||||||
|
mFragment.initHeader();
|
||||||
|
|
||||||
|
ArgumentCaptor<CharSequence> captor = ArgumentCaptor.forClass(CharSequence.class);
|
||||||
|
verify(mEntityHeaderController).setSummary(captor.capture());
|
||||||
|
assertThat(captor.getValue()).isNotNull();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testStartBatteryDetailPage_hasBasicData() {
|
public void testStartBatteryDetailPage_hasBasicData() {
|
||||||
AdvancedPowerUsageDetail.startBatteryDetailPage(mActivity, mFragment,
|
AdvancedPowerUsageDetail.startBatteryDetailPage(mActivity, mFragment,
|
||||||
|
Reference in New Issue
Block a user