[Battery usage U] [UI] Show screen time in the battery detail usage page
screen record: https://drive.google.com/file/d/1TUbcysrVoj10iUhoMIT0wuCDJY8EMpy7/view?resourcekey=0-lS9d0aIQqrgJ7CpOlsOlYw Bug: 258125117 Fix: 258125117 Test: manual Change-Id: I31fbc7c45473ded254ebf1b1e82e09dbc88480cf
This commit is contained in:
@@ -5031,42 +5031,14 @@
|
|||||||
<!-- Title for battery usage amount by this app. [CHAR LIMIT=80] -->
|
<!-- Title for battery usage amount by this app. [CHAR LIMIT=80] -->
|
||||||
<string name="battery_detail_power_usage">Battery usage</string>
|
<string name="battery_detail_power_usage">Battery usage</string>
|
||||||
|
|
||||||
<!-- Description for battery total and background usage time for an app, i.e. 1 hr 15 min total • 39 min background since last full charge. Note: ^1 and ^2 should be used in all translations [CHAR LIMIT=120] -->
|
|
||||||
<string name="battery_total_and_bg_usage"><xliff:g id="time" example="1 hr 15 min">^1</xliff:g> total • <xliff:g id="time" example="39 min">^2</xliff:g> background\nsince last full charge</string>
|
|
||||||
<!-- Description for battery total and background usage time in a time period for an app, i.e. 1 hr 15 min total • 39 min background for 12 am-2 am. Note: ^1, ^2 and ^3 should be used in all translations [CHAR LIMIT=120] -->
|
|
||||||
<string name="battery_total_and_bg_usage_with_period"><xliff:g id="time" example="1 hr 15 min">^1</xliff:g> total • <xliff:g id="time" example="39 min">^2</xliff:g> background\nfor <xliff:g id="time_period" example="12 am-2 am">^3</xliff:g></string>
|
|
||||||
|
|
||||||
<!-- Description for battery total usage time is less than a minute for an app since last full charge [CHAR LIMIT=120] -->
|
|
||||||
<string name="battery_total_usage_less_minute">Total less than a minute since last full charge</string>
|
|
||||||
<!-- Description for battery total usage time is less than a minute in a time period for an app, i.e. Total less than a minute for 12 am-2 am. Note: ^1 should be used in all translations[CHAR LIMIT=120] -->
|
|
||||||
<string name="battery_total_usage_less_minute_with_period">Total less than a minute for <xliff:g id="time_period" example="12 am-2 am">^1</xliff:g></string>
|
|
||||||
|
|
||||||
<!-- Description for battery background usage time is less than a minute for an app since last full charge [CHAR LIMIT=120] -->
|
|
||||||
<string name="battery_bg_usage_less_minute">Background less than a minute since last full charge</string>
|
|
||||||
<!-- Description for battery background usage time is less than a minute in a time period for an app, i.e. Background less than a minute for 12 am-2 am. Note: ^1 should be used in all translations[CHAR LIMIT=120] -->
|
|
||||||
<string name="battery_bg_usage_less_minute_with_period">Background less than a minute for <xliff:g id="time_period" example="12 am-2 am">^1</xliff:g></string>
|
|
||||||
|
|
||||||
<!-- Description for battery total usage time for an app, i.e. 1 hr 15 min total since last full charge. Note: ^1 should be used in all translations [CHAR LIMIT=120] -->
|
|
||||||
<string name="battery_total_usage"><xliff:g id="time" example="1 hr 15 min">^1</xliff:g> total since last full charge</string>
|
|
||||||
<!-- Description for battery total usage time in a time period for an app, i.e. 1 hr 15 min total for 12 am-2 am. Note: ^1 and ^2 should be used in all translations [CHAR LIMIT=120] -->
|
|
||||||
<string name="battery_total_usage_with_period"><xliff:g id="time" example="1 hr 15 min">^1</xliff:g> total for <xliff:g id="time_period" example="12 am-2 am">^2</xliff:g></string>
|
|
||||||
|
|
||||||
<!-- Description for battery background usage time for an app, i.e. 1 hr 15 min background since last full charge. Note: ^1 should be used in all translations [CHAR LIMIT=120] -->
|
|
||||||
<string name="battery_bg_usage"><xliff:g id="time" example="1 hr 15 min">^1</xliff:g> background since last full charge</string>
|
|
||||||
<!-- Description for battery background usage time in a time period for an app, i.e. 1 hr 15 min background for 12 am-2 am. Note: ^1 and ^2 should be used in all translations [CHAR LIMIT=120] -->
|
|
||||||
<string name="battery_bg_usage_with_period"><xliff:g id="time" example="1 hr 15 min">^1</xliff:g> background for <xliff:g id="time_period" example="12 am-2 am">^2</xliff:g></string>
|
|
||||||
|
|
||||||
<!-- Description for battery total usage with background usage time less than a minute for an app, i.e. 1 hr 15 min total • background less than a minute since last full charge. Note: ^1 should be used in all translations [CHAR LIMIT=120] -->
|
|
||||||
<string name="battery_total_usage_and_bg_less_minute_usage"><xliff:g id="time" example="1 hr 15 min">^1</xliff:g> total • background less than a minute\nsince last full charge</string>
|
|
||||||
<!-- Description for battery total usage with background usage time less than a minute in a time period for an app, i.e. 1 hr 15 min total • background less than a minute for 12 am-2 am. Note: ^1 and ^2 should be used in all translations [CHAR LIMIT=120] -->
|
|
||||||
<string name="battery_total_usage_and_bg_less_minute_usage_with_period"><xliff:g id="time" example="1 hr 15 min">^1</xliff:g> total • background less than a minute\nfor <xliff:g id="time_period" example="12 am-2 am">^2</xliff:g></string>
|
|
||||||
|
|
||||||
<!-- Description for no any battery usage since last full charge [CHAR LIMIT=120] -->
|
<!-- Description for no any battery usage since last full charge [CHAR LIMIT=120] -->
|
||||||
<string name="battery_not_usage">No usage since last full charge</string>
|
<string name="battery_not_usage">No usage since last full charge</string>
|
||||||
<!-- Description for no any battery usage for past 24 hr [CHAR LIMIT=120] -->
|
<!-- Description for no any battery usage for past 24 hr [CHAR LIMIT=120] -->
|
||||||
<string name="battery_not_usage_24hr">No usage for past 24 hr</string>
|
<string name="battery_not_usage_24hr">No usage for past 24 hr</string>
|
||||||
<!-- Description for no usage time but have battery usage [CHAR LIMIT=120] -->
|
<!-- Description for no usage time but have battery usage [CHAR LIMIT=120] -->
|
||||||
<string name="battery_usage_without_time"></string>
|
<string name="battery_usage_without_time"></string>
|
||||||
|
<!-- Description for the specific time slot in the battery usage page [CHAR LIMIT=120] -->
|
||||||
|
<string name="battery_usage_since_last_full_charge">since last full charge</string>
|
||||||
<!-- Description for system apps aggregated battery usage data [CHAR LIMIT=120] -->
|
<!-- Description for system apps aggregated battery usage data [CHAR LIMIT=120] -->
|
||||||
<string name="battery_usage_system_apps">System apps</string>
|
<string name="battery_usage_system_apps">System apps</string>
|
||||||
<!-- Description for others battery usage data [CHAR LIMIT=120] -->
|
<!-- Description for others battery usage data [CHAR LIMIT=120] -->
|
||||||
|
@@ -26,7 +26,6 @@ import android.content.pm.PackageManager;
|
|||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.text.format.DateUtils;
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
@@ -51,7 +50,6 @@ import com.android.settingslib.applications.AppUtils;
|
|||||||
import com.android.settingslib.applications.ApplicationsState;
|
import com.android.settingslib.applications.ApplicationsState;
|
||||||
import com.android.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
import com.android.settingslib.core.instrumentation.Instrumentable;
|
import com.android.settingslib.core.instrumentation.Instrumentable;
|
||||||
import com.android.settingslib.utils.StringUtil;
|
|
||||||
import com.android.settingslib.widget.FooterPreference;
|
import com.android.settingslib.widget.FooterPreference;
|
||||||
import com.android.settingslib.widget.LayoutPreference;
|
import com.android.settingslib.widget.LayoutPreference;
|
||||||
import com.android.settingslib.widget.SelectorWithWidgetPreference;
|
import com.android.settingslib.widget.SelectorWithWidgetPreference;
|
||||||
@@ -74,6 +72,7 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
|
|||||||
public static final String EXTRA_PACKAGE_NAME = "extra_package_name";
|
public static final String EXTRA_PACKAGE_NAME = "extra_package_name";
|
||||||
public static final String EXTRA_FOREGROUND_TIME = "extra_foreground_time";
|
public static final String EXTRA_FOREGROUND_TIME = "extra_foreground_time";
|
||||||
public static final String EXTRA_BACKGROUND_TIME = "extra_background_time";
|
public static final String EXTRA_BACKGROUND_TIME = "extra_background_time";
|
||||||
|
public static final String EXTRA_SCREEN_ON_TIME = "extra_screen_on_time";
|
||||||
public static final String EXTRA_SLOT_TIME = "extra_slot_time";
|
public static final String EXTRA_SLOT_TIME = "extra_slot_time";
|
||||||
public static final String EXTRA_LABEL = "extra_label";
|
public static final String EXTRA_LABEL = "extra_label";
|
||||||
public static final String EXTRA_ICON_ID = "extra_icon_id";
|
public static final String EXTRA_ICON_ID = "extra_icon_id";
|
||||||
@@ -87,6 +86,8 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
|
|||||||
private static final String KEY_FOOTER_PREFERENCE = "app_usage_footer_preference";
|
private static final String KEY_FOOTER_PREFERENCE = "app_usage_footer_preference";
|
||||||
private static final String PACKAGE_NAME_NONE = "none";
|
private static final String PACKAGE_NAME_NONE = "none";
|
||||||
|
|
||||||
|
private static final String HEADER_SUMMARY_FORMAT = "%s\n(%s)";
|
||||||
|
|
||||||
private static final int REQUEST_UNINSTALL = 0;
|
private static final int REQUEST_UNINSTALL = 0;
|
||||||
private static final int REQUEST_REMOVE_DEVICE_ADMIN = 1;
|
private static final int REQUEST_REMOVE_DEVICE_ADMIN = 1;
|
||||||
|
|
||||||
@@ -129,6 +130,7 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
|
|||||||
private int mConsumedPower;
|
private int mConsumedPower;
|
||||||
private long mForegroundTimeMs;
|
private long mForegroundTimeMs;
|
||||||
private long mBackgroundTimeMs;
|
private long mBackgroundTimeMs;
|
||||||
|
private long mScreenOnTimeMs;
|
||||||
private boolean mIsUserEntry;
|
private boolean mIsUserEntry;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -156,6 +158,7 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
|
|||||||
launchArgs.mConsumedPower = (int) diffEntry.mConsumePower;
|
launchArgs.mConsumedPower = (int) diffEntry.mConsumePower;
|
||||||
launchArgs.mForegroundTimeMs = diffEntry.mForegroundUsageTimeInMs;
|
launchArgs.mForegroundTimeMs = diffEntry.mForegroundUsageTimeInMs;
|
||||||
launchArgs.mBackgroundTimeMs = diffEntry.mBackgroundUsageTimeInMs;
|
launchArgs.mBackgroundTimeMs = diffEntry.mBackgroundUsageTimeInMs;
|
||||||
|
launchArgs.mScreenOnTimeMs = diffEntry.mScreenOnTimeInMs;
|
||||||
launchArgs.mIsUserEntry = histEntry.isUserEntry();
|
launchArgs.mIsUserEntry = histEntry.isUserEntry();
|
||||||
startBatteryDetailPage(context, sourceMetricsCategory, launchArgs);
|
startBatteryDetailPage(context, sourceMetricsCategory, launchArgs);
|
||||||
}
|
}
|
||||||
@@ -191,6 +194,7 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
|
|||||||
args.putInt(EXTRA_UID, launchArgs.mUid);
|
args.putInt(EXTRA_UID, launchArgs.mUid);
|
||||||
args.putLong(EXTRA_BACKGROUND_TIME, launchArgs.mBackgroundTimeMs);
|
args.putLong(EXTRA_BACKGROUND_TIME, launchArgs.mBackgroundTimeMs);
|
||||||
args.putLong(EXTRA_FOREGROUND_TIME, launchArgs.mForegroundTimeMs);
|
args.putLong(EXTRA_FOREGROUND_TIME, launchArgs.mForegroundTimeMs);
|
||||||
|
args.putLong(EXTRA_SCREEN_ON_TIME, launchArgs.mScreenOnTimeMs);
|
||||||
args.putString(EXTRA_SLOT_TIME, launchArgs.mSlotInformation);
|
args.putString(EXTRA_SLOT_TIME, launchArgs.mSlotInformation);
|
||||||
args.putString(EXTRA_POWER_USAGE_PERCENT, launchArgs.mUsagePercent);
|
args.putString(EXTRA_POWER_USAGE_PERCENT, launchArgs.mUsagePercent);
|
||||||
args.putInt(EXTRA_POWER_USAGE_AMOUNT, launchArgs.mConsumedPower);
|
args.putInt(EXTRA_POWER_USAGE_AMOUNT, launchArgs.mConsumedPower);
|
||||||
@@ -323,7 +327,7 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
|
|||||||
controller.setIsInstantApp(AppUtils.isInstant(mAppEntry.info));
|
controller.setIsInstantApp(AppUtils.isInstant(mAppEntry.info));
|
||||||
}
|
}
|
||||||
|
|
||||||
controller.setSummary(getAppActiveTime(bundle));
|
controller.setSummary(getHeaderSummary(bundle));
|
||||||
controller.done(context, true /* rebindActions */);
|
controller.done(context, true /* rebindActions */);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -474,113 +478,20 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private CharSequence getAppActiveTime(Bundle bundle) {
|
private CharSequence getHeaderSummary(Bundle bundle) {
|
||||||
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 long screenOnTimeInMs = bundle.getLong(EXTRA_SCREEN_ON_TIME);
|
||||||
final String slotTime = bundle.getString(EXTRA_SLOT_TIME, null);
|
final String slotTime = bundle.getString(EXTRA_SLOT_TIME, null);
|
||||||
final long totalTimeMs = foregroundTimeMs + backgroundTimeMs;
|
final String usageSummary = BatteryUtils.buildBatteryUsageTimeSummary(getContext(),
|
||||||
final CharSequence usageTimeSummary;
|
/* isSystem= */ false, foregroundTimeMs, backgroundTimeMs, screenOnTimeInMs);
|
||||||
|
|
||||||
if (totalTimeMs == 0) {
|
if (usageSummary.isEmpty()) {
|
||||||
usageTimeSummary = getText(R.string.battery_usage_without_time);
|
return getText(R.string.battery_usage_without_time);
|
||||||
} else if (slotTime == null) {
|
|
||||||
// Shows summary text with last full charge if slot time is null.
|
|
||||||
usageTimeSummary = getAppFullChargeActiveSummary(
|
|
||||||
foregroundTimeMs, backgroundTimeMs, totalTimeMs);
|
|
||||||
} else {
|
} else {
|
||||||
// Shows summary text with slot time.
|
CharSequence slotSummary = slotTime == null
|
||||||
usageTimeSummary = getAppActiveSummaryWithSlotTime(
|
? getText(R.string.battery_usage_since_last_full_charge) : slotTime;
|
||||||
foregroundTimeMs, backgroundTimeMs, totalTimeMs, slotTime);
|
return String.format("%s\n(%s)", usageSummary, slotSummary);
|
||||||
}
|
|
||||||
return usageTimeSummary;
|
|
||||||
}
|
|
||||||
|
|
||||||
private CharSequence getAppFullChargeActiveSummary(
|
|
||||||
long foregroundTimeMs, long backgroundTimeMs, long totalTimeMs) {
|
|
||||||
// Shows background summary only if we don't have foreground usage time.
|
|
||||||
if (foregroundTimeMs == 0 && backgroundTimeMs != 0) {
|
|
||||||
return backgroundTimeMs < DateUtils.MINUTE_IN_MILLIS ?
|
|
||||||
getText(R.string.battery_bg_usage_less_minute) :
|
|
||||||
TextUtils.expandTemplate(getText(R.string.battery_bg_usage),
|
|
||||||
StringUtil.formatElapsedTime(
|
|
||||||
getContext(),
|
|
||||||
backgroundTimeMs,
|
|
||||||
/* withSeconds */ false,
|
|
||||||
/* collapseTimeUnit */ false));
|
|
||||||
// Shows total usage summary only if total usage time is small.
|
|
||||||
} else if (totalTimeMs < DateUtils.MINUTE_IN_MILLIS) {
|
|
||||||
return getText(R.string.battery_total_usage_less_minute);
|
|
||||||
// Shows different total usage summary when background usage time is small.
|
|
||||||
} else if (backgroundTimeMs < DateUtils.MINUTE_IN_MILLIS) {
|
|
||||||
return TextUtils.expandTemplate(
|
|
||||||
getText(backgroundTimeMs == 0 ?
|
|
||||||
R.string.battery_total_usage :
|
|
||||||
R.string.battery_total_usage_and_bg_less_minute_usage),
|
|
||||||
StringUtil.formatElapsedTime(
|
|
||||||
getContext(),
|
|
||||||
totalTimeMs,
|
|
||||||
/* withSeconds */ false,
|
|
||||||
/* collapseTimeUnit */ false));
|
|
||||||
// Shows default summary.
|
|
||||||
} else {
|
|
||||||
return TextUtils.expandTemplate(
|
|
||||||
getText(R.string.battery_total_and_bg_usage),
|
|
||||||
StringUtil.formatElapsedTime(
|
|
||||||
getContext(),
|
|
||||||
totalTimeMs,
|
|
||||||
/* withSeconds */ false,
|
|
||||||
/* collapseTimeUnit */ false),
|
|
||||||
StringUtil.formatElapsedTime(
|
|
||||||
getContext(),
|
|
||||||
backgroundTimeMs,
|
|
||||||
/* withSeconds */ false,
|
|
||||||
/* collapseTimeUnit */ false));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private CharSequence getAppActiveSummaryWithSlotTime(
|
|
||||||
long foregroundTimeMs, long backgroundTimeMs, long totalTimeMs, String slotTime) {
|
|
||||||
// Shows background summary only if we don't have foreground usage time.
|
|
||||||
if (foregroundTimeMs == 0 && backgroundTimeMs != 0) {
|
|
||||||
return backgroundTimeMs < DateUtils.MINUTE_IN_MILLIS ?
|
|
||||||
TextUtils.expandTemplate(
|
|
||||||
getText(R.string.battery_bg_usage_less_minute_with_period),
|
|
||||||
slotTime) :
|
|
||||||
TextUtils.expandTemplate(getText(R.string.battery_bg_usage_with_period),
|
|
||||||
StringUtil.formatElapsedTime(
|
|
||||||
getContext(),
|
|
||||||
backgroundTimeMs,
|
|
||||||
/* withSeconds */ false,
|
|
||||||
/* collapseTimeUnit */ false), slotTime);
|
|
||||||
// Shows total usage summary only if total usage time is small.
|
|
||||||
} else if (totalTimeMs < DateUtils.MINUTE_IN_MILLIS) {
|
|
||||||
return TextUtils.expandTemplate(
|
|
||||||
getText(R.string.battery_total_usage_less_minute_with_period), slotTime);
|
|
||||||
// Shows different total usage summary when background usage time is small.
|
|
||||||
} else if (backgroundTimeMs < DateUtils.MINUTE_IN_MILLIS) {
|
|
||||||
return TextUtils.expandTemplate(
|
|
||||||
getText(backgroundTimeMs == 0 ?
|
|
||||||
R.string.battery_total_usage_with_period :
|
|
||||||
R.string.battery_total_usage_and_bg_less_minute_usage_with_period),
|
|
||||||
StringUtil.formatElapsedTime(
|
|
||||||
getContext(),
|
|
||||||
totalTimeMs,
|
|
||||||
/* withSeconds */ false,
|
|
||||||
/* collapseTimeUnit */ false), slotTime);
|
|
||||||
// Shows default summary.
|
|
||||||
} else {
|
|
||||||
return TextUtils.expandTemplate(
|
|
||||||
getText(R.string.battery_total_and_bg_usage_with_period),
|
|
||||||
StringUtil.formatElapsedTime(
|
|
||||||
getContext(),
|
|
||||||
totalTimeMs,
|
|
||||||
/* withSeconds */ false,
|
|
||||||
/* collapseTimeUnit */ false),
|
|
||||||
StringUtil.formatElapsedTime(
|
|
||||||
getContext(),
|
|
||||||
backgroundTimeMs,
|
|
||||||
/* withSeconds */ false,
|
|
||||||
/* collapseTimeUnit */ false), slotTime);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -34,6 +34,7 @@ import android.os.SystemClock;
|
|||||||
import android.os.UidBatteryConsumer;
|
import android.os.UidBatteryConsumer;
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
|
import android.text.format.DateUtils;
|
||||||
import android.util.Base64;
|
import android.util.Base64;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
@@ -43,6 +44,7 @@ import androidx.annotation.VisibleForTesting;
|
|||||||
import androidx.annotation.WorkerThread;
|
import androidx.annotation.WorkerThread;
|
||||||
|
|
||||||
import com.android.internal.util.ArrayUtils;
|
import com.android.internal.util.ArrayUtils;
|
||||||
|
import com.android.settings.R;
|
||||||
import com.android.settings.fuelgauge.batterytip.AnomalyDatabaseHelper;
|
import com.android.settings.fuelgauge.batterytip.AnomalyDatabaseHelper;
|
||||||
import com.android.settings.fuelgauge.batterytip.AnomalyInfo;
|
import com.android.settings.fuelgauge.batterytip.AnomalyInfo;
|
||||||
import com.android.settings.fuelgauge.batterytip.BatteryDatabaseManager;
|
import com.android.settings.fuelgauge.batterytip.BatteryDatabaseManager;
|
||||||
@@ -53,6 +55,7 @@ import com.android.settingslib.fuelgauge.Estimate;
|
|||||||
import com.android.settingslib.fuelgauge.EstimateKt;
|
import com.android.settingslib.fuelgauge.EstimateKt;
|
||||||
import com.android.settingslib.fuelgauge.PowerAllowlistBackend;
|
import com.android.settingslib.fuelgauge.PowerAllowlistBackend;
|
||||||
import com.android.settingslib.utils.PowerUtil;
|
import com.android.settingslib.utils.PowerUtil;
|
||||||
|
import com.android.settingslib.utils.StringUtil;
|
||||||
import com.android.settingslib.utils.ThreadUtils;
|
import com.android.settingslib.utils.ThreadUtils;
|
||||||
|
|
||||||
import com.google.protobuf.InvalidProtocolBufferException;
|
import com.google.protobuf.InvalidProtocolBufferException;
|
||||||
@@ -616,4 +619,45 @@ public class BatteryUtils {
|
|||||||
}
|
}
|
||||||
return DockDefenderMode.DISABLED;
|
return DockDefenderMode.DISABLED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Builds the battery usage time summary. */
|
||||||
|
public static String buildBatteryUsageTimeSummary(final Context context, final boolean isSystem,
|
||||||
|
final long foregroundUsageTimeInMs, final long backgroundUsageTimeInMs,
|
||||||
|
final long screenOnTimeInMs) {
|
||||||
|
StringBuilder summary = new StringBuilder();
|
||||||
|
if (isSystem) {
|
||||||
|
final long totalUsageTimeInMs = foregroundUsageTimeInMs + backgroundUsageTimeInMs;
|
||||||
|
if (totalUsageTimeInMs != 0) {
|
||||||
|
summary.append(buildBatteryUsageTimeInfo(context, totalUsageTimeInMs,
|
||||||
|
R.string.battery_usage_total_less_than_one_minute,
|
||||||
|
R.string.battery_usage_for_total_time));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (screenOnTimeInMs != 0) {
|
||||||
|
summary.append(buildBatteryUsageTimeInfo(context, screenOnTimeInMs,
|
||||||
|
R.string.battery_usage_screen_time_less_than_one_minute,
|
||||||
|
R.string.battery_usage_screen_time));
|
||||||
|
}
|
||||||
|
if (screenOnTimeInMs != 0 && backgroundUsageTimeInMs != 0) {
|
||||||
|
summary.append('\n');
|
||||||
|
}
|
||||||
|
if (backgroundUsageTimeInMs != 0) {
|
||||||
|
summary.append(buildBatteryUsageTimeInfo(context, backgroundUsageTimeInMs,
|
||||||
|
R.string.battery_usage_background_less_than_one_minute,
|
||||||
|
R.string.battery_usage_for_background_time));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return summary.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Builds the battery usage time information for one timestamp. */
|
||||||
|
private static String buildBatteryUsageTimeInfo(final Context context, long timeInMs,
|
||||||
|
final int lessThanOneMinuteResId, final int normalResId) {
|
||||||
|
if (timeInMs < DateUtils.MINUTE_IN_MILLIS) {
|
||||||
|
return context.getString(lessThanOneMinuteResId);
|
||||||
|
}
|
||||||
|
final CharSequence timeSequence = StringUtil.formatElapsedTime(
|
||||||
|
context, (double) timeInMs, /*withSeconds=*/ false, /*collapseTimeUnit=*/ false);
|
||||||
|
return context.getString(normalResId, timeSequence);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -22,7 +22,6 @@ import android.graphics.drawable.Drawable;
|
|||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.text.format.DateUtils;
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.AdapterView;
|
import android.widget.AdapterView;
|
||||||
@@ -38,12 +37,12 @@ import com.android.settings.SettingsActivity;
|
|||||||
import com.android.settings.core.BasePreferenceController;
|
import com.android.settings.core.BasePreferenceController;
|
||||||
import com.android.settings.core.InstrumentedPreferenceFragment;
|
import com.android.settings.core.InstrumentedPreferenceFragment;
|
||||||
import com.android.settings.fuelgauge.AdvancedPowerUsageDetail;
|
import com.android.settings.fuelgauge.AdvancedPowerUsageDetail;
|
||||||
|
import com.android.settings.fuelgauge.BatteryUtils;
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||||
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
||||||
import com.android.settingslib.core.lifecycle.events.OnDestroy;
|
import com.android.settingslib.core.lifecycle.events.OnDestroy;
|
||||||
import com.android.settingslib.utils.StringUtil;
|
|
||||||
import com.android.settingslib.widget.FooterPreference;
|
import com.android.settingslib.widget.FooterPreference;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@@ -296,43 +295,9 @@ public class BatteryUsageBreakdownController extends BasePreferenceController
|
|||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
void setPreferenceSummary(
|
void setPreferenceSummary(
|
||||||
PowerGaugePreference preference, BatteryDiffEntry entry) {
|
PowerGaugePreference preference, BatteryDiffEntry entry) {
|
||||||
final long screenOnTimeInMs = entry.mScreenOnTimeInMs;
|
preference.setSummary(
|
||||||
final long foregroundUsageTimeInMs = entry.mForegroundUsageTimeInMs;
|
BatteryUtils.buildBatteryUsageTimeSummary(mPrefContext, entry.isSystemEntry(),
|
||||||
final long backgroundUsageTimeInMs = entry.mBackgroundUsageTimeInMs;
|
entry.mForegroundUsageTimeInMs, entry.mBackgroundUsageTimeInMs,
|
||||||
final long totalUsageTimeInMs = foregroundUsageTimeInMs + backgroundUsageTimeInMs;
|
entry.mScreenOnTimeInMs));
|
||||||
|
|
||||||
StringBuilder usageTimeSummary = new StringBuilder();
|
|
||||||
if (entry.isSystemEntry()) {
|
|
||||||
if (totalUsageTimeInMs != 0) {
|
|
||||||
usageTimeSummary.append(buildUsageTimeInfo(totalUsageTimeInMs,
|
|
||||||
R.string.battery_usage_total_less_than_one_minute,
|
|
||||||
R.string.battery_usage_for_total_time));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (screenOnTimeInMs != 0) {
|
|
||||||
usageTimeSummary.append(buildUsageTimeInfo(screenOnTimeInMs,
|
|
||||||
R.string.battery_usage_screen_time_less_than_one_minute,
|
|
||||||
R.string.battery_usage_screen_time));
|
|
||||||
}
|
|
||||||
if (screenOnTimeInMs != 0 && backgroundUsageTimeInMs != 0) {
|
|
||||||
usageTimeSummary.append('\n');
|
|
||||||
}
|
|
||||||
if (backgroundUsageTimeInMs != 0) {
|
|
||||||
usageTimeSummary.append(buildUsageTimeInfo(backgroundUsageTimeInMs,
|
|
||||||
R.string.battery_usage_background_less_than_one_minute,
|
|
||||||
R.string.battery_usage_for_background_time));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
preference.setSummary(usageTimeSummary);
|
|
||||||
}
|
|
||||||
|
|
||||||
private String buildUsageTimeInfo(long timeInMs, int lessThanOneMinuteResId, int normalResId) {
|
|
||||||
if (timeInMs < DateUtils.MINUTE_IN_MILLIS) {
|
|
||||||
return mPrefContext.getString(lessThanOneMinuteResId);
|
|
||||||
}
|
|
||||||
final CharSequence timeSequence =
|
|
||||||
StringUtil.formatElapsedTime(mPrefContext, (double) timeInMs,
|
|
||||||
/*withSeconds=*/ false, /*collapseTimeUnit=*/ false);
|
|
||||||
return mPrefContext.getString(normalResId, timeSequence);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -89,7 +89,6 @@ public class AdvancedPowerUsageDetailTest {
|
|||||||
private static final String SLOT_TIME = "12 am-2 am";
|
private static final String SLOT_TIME = "12 am-2 am";
|
||||||
private static final int ICON_ID = 123;
|
private static final int ICON_ID = 123;
|
||||||
private static final int UID = 1;
|
private static final int UID = 1;
|
||||||
private static final int POWER_MAH = 150;
|
|
||||||
private static final long BACKGROUND_TIME_MS = 100;
|
private static final long BACKGROUND_TIME_MS = 100;
|
||||||
private static final long FOREGROUND_ACTIVITY_TIME_MS = 123;
|
private static final long FOREGROUND_ACTIVITY_TIME_MS = 123;
|
||||||
private static final long FOREGROUND_SERVICE_TIME_MS = 444;
|
private static final long FOREGROUND_SERVICE_TIME_MS = 444;
|
||||||
@@ -270,10 +269,11 @@ public class AdvancedPowerUsageDetailTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void initHeader_noUsageTime_hasCorrectSummary() {
|
public void initHeader_noAnyTimeNoConsumedPower_hasEmptySummary() {
|
||||||
Bundle bundle = new Bundle(2);
|
Bundle bundle = new Bundle();
|
||||||
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, /* value */ 0);
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, /* value */ 0);
|
||||||
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, /* value */ 0);
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, /* value */ 0);
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_SCREEN_ON_TIME, /* value */ 0);
|
||||||
when(mFragment.getArguments()).thenReturn(bundle);
|
when(mFragment.getArguments()).thenReturn(bundle);
|
||||||
|
|
||||||
mFragment.initHeader();
|
mFragment.initHeader();
|
||||||
@@ -284,10 +284,11 @@ public class AdvancedPowerUsageDetailTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void initHeader_noUsageTimeButConsumedPower_hasEmptySummary() {
|
public void initHeader_noAnyTimeButConsumedPower_hasEmptySummary() {
|
||||||
Bundle bundle = new Bundle(3);
|
Bundle bundle = new Bundle();
|
||||||
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, /* value */ 0);
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, /* value */ 0);
|
||||||
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, /* value */ 0);
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, /* value */ 0);
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_SCREEN_ON_TIME, /* value */ 0);
|
||||||
bundle.putInt(AdvancedPowerUsageDetail.EXTRA_POWER_USAGE_AMOUNT, /* value */ 10);
|
bundle.putInt(AdvancedPowerUsageDetail.EXTRA_POWER_USAGE_AMOUNT, /* value */ 10);
|
||||||
when(mFragment.getArguments()).thenReturn(bundle);
|
when(mFragment.getArguments()).thenReturn(bundle);
|
||||||
|
|
||||||
@@ -299,12 +300,14 @@ public class AdvancedPowerUsageDetailTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void initHeader_backgroundTwoMinForegroundZero_hasCorrectSummary() {
|
public void initHeader_ScreenTimeZerobackgroundTwoMin_hasCorrectSummary() {
|
||||||
final long backgroundTimeTwoMinutes = 120000;
|
final long backgroundTimeTwoMinutes = 120000;
|
||||||
final long foregroundTimeZero = 0;
|
final long foregroundTimeZero = 0;
|
||||||
Bundle bundle = new Bundle(2);
|
final long screenOnTimeZero = 0;
|
||||||
|
Bundle bundle = new Bundle();
|
||||||
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, backgroundTimeTwoMinutes);
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, backgroundTimeTwoMinutes);
|
||||||
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, foregroundTimeZero);
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, foregroundTimeZero);
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_SCREEN_ON_TIME, screenOnTimeZero);
|
||||||
when(mFragment.getArguments()).thenReturn(bundle);
|
when(mFragment.getArguments()).thenReturn(bundle);
|
||||||
|
|
||||||
mFragment.initHeader();
|
mFragment.initHeader();
|
||||||
@@ -312,17 +315,19 @@ public class AdvancedPowerUsageDetailTest {
|
|||||||
ArgumentCaptor<CharSequence> captor = ArgumentCaptor.forClass(CharSequence.class);
|
ArgumentCaptor<CharSequence> captor = ArgumentCaptor.forClass(CharSequence.class);
|
||||||
verify(mEntityHeaderController).setSummary(captor.capture());
|
verify(mEntityHeaderController).setSummary(captor.capture());
|
||||||
assertThat(captor.getValue().toString())
|
assertThat(captor.getValue().toString())
|
||||||
.isEqualTo("2 min background since last full charge");
|
.isEqualTo("Background: 2 min\n(since last full charge)");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void initHeader_backgroundLessThanAMinForegroundZero_hasCorrectSummary() {
|
public void initHeader_ScreenTimeZerobackgroundLessThanAMin_hasCorrectSummary() {
|
||||||
final long backgroundTimeLessThanAMinute = 59999;
|
final long backgroundTimeLessThanAMinute = 59999;
|
||||||
final long foregroundTimeZero = 0;
|
final long foregroundTimeZero = 0;
|
||||||
Bundle bundle = new Bundle(2);
|
final long screenOnTimeZero = 0;
|
||||||
|
Bundle bundle = new Bundle();
|
||||||
bundle.putLong(
|
bundle.putLong(
|
||||||
AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, backgroundTimeLessThanAMinute);
|
AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, backgroundTimeLessThanAMinute);
|
||||||
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, foregroundTimeZero);
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, foregroundTimeZero);
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_SCREEN_ON_TIME, screenOnTimeZero);
|
||||||
when(mFragment.getArguments()).thenReturn(bundle);
|
when(mFragment.getArguments()).thenReturn(bundle);
|
||||||
|
|
||||||
mFragment.initHeader();
|
mFragment.initHeader();
|
||||||
@@ -330,35 +335,18 @@ public class AdvancedPowerUsageDetailTest {
|
|||||||
ArgumentCaptor<CharSequence> captor = ArgumentCaptor.forClass(CharSequence.class);
|
ArgumentCaptor<CharSequence> captor = ArgumentCaptor.forClass(CharSequence.class);
|
||||||
verify(mEntityHeaderController).setSummary(captor.capture());
|
verify(mEntityHeaderController).setSummary(captor.capture());
|
||||||
assertThat(captor.getValue().toString())
|
assertThat(captor.getValue().toString())
|
||||||
.isEqualTo("Background less than a minute since last full charge");
|
.isEqualTo("Background: less than a min\n(since last full charge)");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void initHeader_totalUsageLessThanAMin_hasCorrectSummary() {
|
public void initHeader_ScreenTimeAMinuteBackgroundTwoMin_hasCorrectSummary() {
|
||||||
final long backgroundTimeLessThanHalfMinute = 20000;
|
final long backgroundTimeTwoMinutes = 120000;
|
||||||
final long foregroundTimeLessThanHalfMinute = 20000;
|
final long foregroundTimeTwoMinutes = 120000;
|
||||||
Bundle bundle = new Bundle(2);
|
final long screenOnTimeAMinute = 60000;
|
||||||
bundle.putLong(
|
Bundle bundle = new Bundle();
|
||||||
AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, backgroundTimeLessThanHalfMinute);
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, backgroundTimeTwoMinutes);
|
||||||
bundle.putLong(
|
|
||||||
AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, foregroundTimeLessThanHalfMinute);
|
|
||||||
when(mFragment.getArguments()).thenReturn(bundle);
|
|
||||||
|
|
||||||
mFragment.initHeader();
|
|
||||||
|
|
||||||
ArgumentCaptor<CharSequence> captor = ArgumentCaptor.forClass(CharSequence.class);
|
|
||||||
verify(mEntityHeaderController).setSummary(captor.capture());
|
|
||||||
assertThat(captor.getValue().toString())
|
|
||||||
.isEqualTo("Total less than a minute since last full charge");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void initHeader_TotalAMinutesBackgroundLessThanAMin_hasCorrectSummary() {
|
|
||||||
final long backgroundTimeZero = 59999;
|
|
||||||
final long foregroundTimeTwoMinutes = 1;
|
|
||||||
Bundle bundle = new Bundle(2);
|
|
||||||
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, backgroundTimeZero);
|
|
||||||
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, foregroundTimeTwoMinutes);
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, foregroundTimeTwoMinutes);
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_SCREEN_ON_TIME, screenOnTimeAMinute);
|
||||||
when(mFragment.getArguments()).thenReturn(bundle);
|
when(mFragment.getArguments()).thenReturn(bundle);
|
||||||
|
|
||||||
mFragment.initHeader();
|
mFragment.initHeader();
|
||||||
@@ -366,106 +354,149 @@ public class AdvancedPowerUsageDetailTest {
|
|||||||
ArgumentCaptor<CharSequence> captor = ArgumentCaptor.forClass(CharSequence.class);
|
ArgumentCaptor<CharSequence> captor = ArgumentCaptor.forClass(CharSequence.class);
|
||||||
verify(mEntityHeaderController).setSummary(captor.capture());
|
verify(mEntityHeaderController).setSummary(captor.capture());
|
||||||
assertThat(captor.getValue().toString()).isEqualTo(
|
assertThat(captor.getValue().toString()).isEqualTo(
|
||||||
"1 min total • background less than a minute\nsince last full charge");
|
"Screen time: 1 min\nBackground: 2 min\n(since last full charge)");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void initHeader_TotalAMinBackgroundZero_hasCorrectSummary() {
|
public void initHeader_ScreenTimeAMinuteBackgroundLessThanAMin_hasCorrectSummary() {
|
||||||
final long backgroundTimeZero = 0;
|
final long backgroundTimeLessThanAMinute = 59999;
|
||||||
final long foregroundTimeAMinutes = 60000;
|
|
||||||
Bundle bundle = new Bundle(2);
|
|
||||||
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, backgroundTimeZero);
|
|
||||||
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, foregroundTimeAMinutes);
|
|
||||||
when(mFragment.getArguments()).thenReturn(bundle);
|
|
||||||
|
|
||||||
mFragment.initHeader();
|
|
||||||
|
|
||||||
ArgumentCaptor<CharSequence> captor = ArgumentCaptor.forClass(CharSequence.class);
|
|
||||||
verify(mEntityHeaderController).setSummary(captor.capture());
|
|
||||||
assertThat(captor.getValue().toString())
|
|
||||||
.isEqualTo("1 min total since last full charge");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void initHeader_foregroundTwoMinBackgroundFourMin_hasCorrectSummary() {
|
|
||||||
final long backgroundTimeFourMinute = 240000;
|
|
||||||
final long foregroundTimeTwoMinutes = 120000;
|
final long foregroundTimeTwoMinutes = 120000;
|
||||||
Bundle bundle = new Bundle(2);
|
final long screenOnTimeAMinute = 60000;
|
||||||
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, backgroundTimeFourMinute);
|
Bundle bundle = new Bundle();
|
||||||
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, foregroundTimeTwoMinutes);
|
|
||||||
when(mFragment.getArguments()).thenReturn(bundle);
|
|
||||||
|
|
||||||
mFragment.initHeader();
|
|
||||||
|
|
||||||
ArgumentCaptor<CharSequence> captor = ArgumentCaptor.forClass(CharSequence.class);
|
|
||||||
verify(mEntityHeaderController).setSummary(captor.capture());
|
|
||||||
assertThat(captor.getValue().toString())
|
|
||||||
.isEqualTo("6 min total • 4 min background\nsince last full charge");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void initHeader_totalUsageLessThanAMinWithSlotTime_hasCorrectSummary() {
|
|
||||||
final long backgroundTimeLessThanHalfMinute = 20000;
|
|
||||||
final long foregroundTimeLessThanHalfMinute = 20000;
|
|
||||||
Bundle bundle = new Bundle(3);
|
|
||||||
bundle.putLong(
|
bundle.putLong(
|
||||||
AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, backgroundTimeLessThanHalfMinute);
|
AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, backgroundTimeLessThanAMinute);
|
||||||
bundle.putLong(
|
|
||||||
AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, foregroundTimeLessThanHalfMinute);
|
|
||||||
bundle.putString(AdvancedPowerUsageDetail.EXTRA_SLOT_TIME, SLOT_TIME);
|
|
||||||
when(mFragment.getArguments()).thenReturn(bundle);
|
|
||||||
|
|
||||||
mFragment.initHeader();
|
|
||||||
|
|
||||||
ArgumentCaptor<CharSequence> captor = ArgumentCaptor.forClass(CharSequence.class);
|
|
||||||
verify(mEntityHeaderController).setSummary(captor.capture());
|
|
||||||
assertThat(captor.getValue().toString())
|
|
||||||
.isEqualTo("Total less than a minute for 12 am-2 am");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void initHeader_TotalAMinBackgroundLessThanAMinWithSlotTime_hasCorrectSummary() {
|
|
||||||
final long backgroundTimeZero = 59999;
|
|
||||||
final long foregroundTimeTwoMinutes = 1;
|
|
||||||
Bundle bundle = new Bundle(3);
|
|
||||||
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.putLong(AdvancedPowerUsageDetail.EXTRA_SCREEN_ON_TIME, screenOnTimeAMinute);
|
||||||
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);
|
||||||
verify(mEntityHeaderController).setSummary(captor.capture());
|
verify(mEntityHeaderController).setSummary(captor.capture());
|
||||||
assertThat(captor.getValue().toString())
|
assertThat(captor.getValue().toString()).isEqualTo(
|
||||||
.isEqualTo("1 min total • background less than a minute\nfor 12 am-2 am");
|
"Screen time: 1 min\nBackground: less than a min\n(since last full charge)");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void initHeader_TotalAMinBackgroundZeroWithSlotTime_hasCorrectSummary() {
|
public void initHeader_ScreenTimeAMinuteBackgroundZero_hasCorrectSummary() {
|
||||||
final long backgroundTimeZero = 0;
|
final long backgroundTimezero = 0;
|
||||||
final long foregroundTimeAMinutes = 60000;
|
|
||||||
Bundle bundle = new Bundle(3);
|
|
||||||
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, backgroundTimeZero);
|
|
||||||
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, foregroundTimeAMinutes);
|
|
||||||
bundle.putString(AdvancedPowerUsageDetail.EXTRA_SLOT_TIME, SLOT_TIME);
|
|
||||||
when(mFragment.getArguments()).thenReturn(bundle);
|
|
||||||
|
|
||||||
mFragment.initHeader();
|
|
||||||
|
|
||||||
ArgumentCaptor<CharSequence> captor = ArgumentCaptor.forClass(CharSequence.class);
|
|
||||||
verify(mEntityHeaderController).setSummary(captor.capture());
|
|
||||||
assertThat(captor.getValue().toString())
|
|
||||||
.isEqualTo("1 min total for 12 am-2 am");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void initHeader_foregroundTwoMinBackgroundFourMinWithSlotTime_hasCorrectSummary() {
|
|
||||||
final long backgroundTimeFourMinute = 240000;
|
|
||||||
final long foregroundTimeTwoMinutes = 120000;
|
final long foregroundTimeTwoMinutes = 120000;
|
||||||
Bundle bundle = new Bundle(3);
|
final long screenOnTimeAMinute = 60000;
|
||||||
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, backgroundTimeFourMinute);
|
Bundle bundle = new Bundle();
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, backgroundTimezero);
|
||||||
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, foregroundTimeTwoMinutes);
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, foregroundTimeTwoMinutes);
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_SCREEN_ON_TIME, screenOnTimeAMinute);
|
||||||
|
when(mFragment.getArguments()).thenReturn(bundle);
|
||||||
|
|
||||||
|
mFragment.initHeader();
|
||||||
|
|
||||||
|
ArgumentCaptor<CharSequence> captor = ArgumentCaptor.forClass(CharSequence.class);
|
||||||
|
verify(mEntityHeaderController).setSummary(captor.capture());
|
||||||
|
assertThat(captor.getValue().toString()).isEqualTo(
|
||||||
|
"Screen time: 1 min\n(since last full charge)");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void initHeader_ScreenTimeLessThanAMinBackgroundTwoMin_hasCorrectSummary() {
|
||||||
|
final long backgroundTimeTwoMinutes = 120000;
|
||||||
|
final long foregroundTimeTwoMinutes = 120000;
|
||||||
|
final long screenOnTimeLessThanAMinute = 59999;
|
||||||
|
Bundle bundle = new Bundle();
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, backgroundTimeTwoMinutes);
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, foregroundTimeTwoMinutes);
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_SCREEN_ON_TIME, screenOnTimeLessThanAMinute);
|
||||||
|
when(mFragment.getArguments()).thenReturn(bundle);
|
||||||
|
|
||||||
|
mFragment.initHeader();
|
||||||
|
|
||||||
|
ArgumentCaptor<CharSequence> captor = ArgumentCaptor.forClass(CharSequence.class);
|
||||||
|
verify(mEntityHeaderController).setSummary(captor.capture());
|
||||||
|
assertThat(captor.getValue().toString()).isEqualTo(
|
||||||
|
"Screen time: less than a min\nBackground: 2 min\n(since last full charge)");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void initHeader_ScreenTimeLessThanAMinBackgroundLessThanAMin_hasCorrectSummary() {
|
||||||
|
final long backgroundTimeLessThanAMinute = 59999;
|
||||||
|
final long foregroundTimeTwoMinutes = 120000;
|
||||||
|
final long screenOnTimeLessThanAMinute = 59999;
|
||||||
|
Bundle bundle = new Bundle();
|
||||||
|
bundle.putLong(
|
||||||
|
AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, backgroundTimeLessThanAMinute);
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, foregroundTimeTwoMinutes);
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_SCREEN_ON_TIME, screenOnTimeLessThanAMinute);
|
||||||
|
when(mFragment.getArguments()).thenReturn(bundle);
|
||||||
|
|
||||||
|
mFragment.initHeader();
|
||||||
|
|
||||||
|
ArgumentCaptor<CharSequence> captor = ArgumentCaptor.forClass(CharSequence.class);
|
||||||
|
verify(mEntityHeaderController).setSummary(captor.capture());
|
||||||
|
assertThat(captor.getValue().toString()).isEqualTo(
|
||||||
|
"Screen time: less than a min\nBackground: less than a min\n(since last full "
|
||||||
|
+ "charge)");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void initHeader_ScreenTimeLessThanAMinBackgroundZero_hasCorrectSummary() {
|
||||||
|
final long backgroundTimezero = 0;
|
||||||
|
final long foregroundTimeTwoMinutes = 120000;
|
||||||
|
final long screenOnTimeLessThanAMinute = 59999;
|
||||||
|
Bundle bundle = new Bundle();
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, backgroundTimezero);
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, foregroundTimeTwoMinutes);
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_SCREEN_ON_TIME, screenOnTimeLessThanAMinute);
|
||||||
|
when(mFragment.getArguments()).thenReturn(bundle);
|
||||||
|
|
||||||
|
mFragment.initHeader();
|
||||||
|
|
||||||
|
ArgumentCaptor<CharSequence> captor = ArgumentCaptor.forClass(CharSequence.class);
|
||||||
|
verify(mEntityHeaderController).setSummary(captor.capture());
|
||||||
|
assertThat(captor.getValue().toString()).isEqualTo(
|
||||||
|
"Screen time: less than a min\n(since last full charge)");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void initHeader_noAnyTimeNoConsumedPowerWithSlotTime_hasEmptySummary() {
|
||||||
|
Bundle bundle = new Bundle();
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, /* value */ 0);
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, /* value */ 0);
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_SCREEN_ON_TIME, /* value */ 0);
|
||||||
|
bundle.putString(AdvancedPowerUsageDetail.EXTRA_SLOT_TIME, SLOT_TIME);
|
||||||
|
when(mFragment.getArguments()).thenReturn(bundle);
|
||||||
|
|
||||||
|
mFragment.initHeader();
|
||||||
|
|
||||||
|
ArgumentCaptor<CharSequence> captor = ArgumentCaptor.forClass(CharSequence.class);
|
||||||
|
verify(mEntityHeaderController).setSummary(captor.capture());
|
||||||
|
assertThat(captor.getValue().toString()).isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void initHeader_noAnyTimeButConsumedPowerWithSlotTime_hasEmptySummary() {
|
||||||
|
Bundle bundle = new Bundle();
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, /* value */ 0);
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, /* value */ 0);
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_SCREEN_ON_TIME, /* value */ 0);
|
||||||
|
bundle.putInt(AdvancedPowerUsageDetail.EXTRA_POWER_USAGE_AMOUNT, /* value */ 10);
|
||||||
|
bundle.putString(AdvancedPowerUsageDetail.EXTRA_SLOT_TIME, SLOT_TIME);
|
||||||
|
when(mFragment.getArguments()).thenReturn(bundle);
|
||||||
|
|
||||||
|
mFragment.initHeader();
|
||||||
|
|
||||||
|
ArgumentCaptor<CharSequence> captor = ArgumentCaptor.forClass(CharSequence.class);
|
||||||
|
verify(mEntityHeaderController).setSummary(captor.capture());
|
||||||
|
assertThat(captor.getValue().toString()).isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void initHeader_ScreenTimeZerobackgroundTwoMinWithSlotTime_hasCorrectSummary() {
|
||||||
|
final long backgroundTimeTwoMinutes = 120000;
|
||||||
|
final long foregroundTimeZero = 0;
|
||||||
|
final long screenOnTimeZero = 0;
|
||||||
|
Bundle bundle = new Bundle();
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, backgroundTimeTwoMinutes);
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, foregroundTimeZero);
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_SCREEN_ON_TIME, screenOnTimeZero);
|
||||||
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);
|
||||||
|
|
||||||
@@ -474,14 +505,158 @@ public class AdvancedPowerUsageDetailTest {
|
|||||||
ArgumentCaptor<CharSequence> captor = ArgumentCaptor.forClass(CharSequence.class);
|
ArgumentCaptor<CharSequence> captor = ArgumentCaptor.forClass(CharSequence.class);
|
||||||
verify(mEntityHeaderController).setSummary(captor.capture());
|
verify(mEntityHeaderController).setSummary(captor.capture());
|
||||||
assertThat(captor.getValue().toString())
|
assertThat(captor.getValue().toString())
|
||||||
.isEqualTo("6 min total • 4 min background\nfor 12 am-2 am");
|
.isEqualTo("Background: 2 min\n(12 am-2 am)");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void initHeader_ScreenTimeZerobackgroundLessThanAMinWithSlotTime_hasCorrectSummary() {
|
||||||
|
final long backgroundTimeLessThanAMinute = 59999;
|
||||||
|
final long foregroundTimeZero = 0;
|
||||||
|
final long screenOnTimeZero = 0;
|
||||||
|
Bundle bundle = new Bundle();
|
||||||
|
bundle.putLong(
|
||||||
|
AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, backgroundTimeLessThanAMinute);
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, foregroundTimeZero);
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_SCREEN_ON_TIME, screenOnTimeZero);
|
||||||
|
bundle.putString(AdvancedPowerUsageDetail.EXTRA_SLOT_TIME, SLOT_TIME);
|
||||||
|
when(mFragment.getArguments()).thenReturn(bundle);
|
||||||
|
|
||||||
|
mFragment.initHeader();
|
||||||
|
|
||||||
|
ArgumentCaptor<CharSequence> captor = ArgumentCaptor.forClass(CharSequence.class);
|
||||||
|
verify(mEntityHeaderController).setSummary(captor.capture());
|
||||||
|
assertThat(captor.getValue().toString())
|
||||||
|
.isEqualTo("Background: less than a min\n(12 am-2 am)");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void initHeader_ScreenTimeAMinuteBackgroundTwoMinWithSlotTime_hasCorrectSummary() {
|
||||||
|
final long backgroundTimeTwoMinutes = 120000;
|
||||||
|
final long foregroundTimeTwoMinutes = 120000;
|
||||||
|
final long screenOnTimeAMinute = 60000;
|
||||||
|
Bundle bundle = new Bundle();
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, backgroundTimeTwoMinutes);
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, foregroundTimeTwoMinutes);
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_SCREEN_ON_TIME, screenOnTimeAMinute);
|
||||||
|
bundle.putString(AdvancedPowerUsageDetail.EXTRA_SLOT_TIME, SLOT_TIME);
|
||||||
|
when(mFragment.getArguments()).thenReturn(bundle);
|
||||||
|
|
||||||
|
mFragment.initHeader();
|
||||||
|
|
||||||
|
ArgumentCaptor<CharSequence> captor = ArgumentCaptor.forClass(CharSequence.class);
|
||||||
|
verify(mEntityHeaderController).setSummary(captor.capture());
|
||||||
|
assertThat(captor.getValue().toString()).isEqualTo(
|
||||||
|
"Screen time: 1 min\nBackground: 2 min\n(12 am-2 am)");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void initHeader_ScreenTimeAMinuteBackgroundLessThanAMinWithSlotTime_hasCorrectSummary() {
|
||||||
|
final long backgroundTimeLessThanAMinute = 59999;
|
||||||
|
final long foregroundTimeTwoMinutes = 120000;
|
||||||
|
final long screenOnTimeAMinute = 60000;
|
||||||
|
Bundle bundle = new Bundle();
|
||||||
|
bundle.putLong(
|
||||||
|
AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, backgroundTimeLessThanAMinute);
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, foregroundTimeTwoMinutes);
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_SCREEN_ON_TIME, screenOnTimeAMinute);
|
||||||
|
bundle.putString(AdvancedPowerUsageDetail.EXTRA_SLOT_TIME, SLOT_TIME);
|
||||||
|
when(mFragment.getArguments()).thenReturn(bundle);
|
||||||
|
|
||||||
|
mFragment.initHeader();
|
||||||
|
|
||||||
|
ArgumentCaptor<CharSequence> captor = ArgumentCaptor.forClass(CharSequence.class);
|
||||||
|
verify(mEntityHeaderController).setSummary(captor.capture());
|
||||||
|
assertThat(captor.getValue().toString()).isEqualTo(
|
||||||
|
"Screen time: 1 min\nBackground: less than a min\n(12 am-2 am)");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void initHeader_ScreenTimeAMinuteBackgroundZeroWithSlotTime_hasCorrectSummary() {
|
||||||
|
final long backgroundTimezero = 0;
|
||||||
|
final long foregroundTimeTwoMinutes = 120000;
|
||||||
|
final long screenOnTimeAMinute = 60000;
|
||||||
|
Bundle bundle = new Bundle();
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, backgroundTimezero);
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, foregroundTimeTwoMinutes);
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_SCREEN_ON_TIME, screenOnTimeAMinute);
|
||||||
|
bundle.putString(AdvancedPowerUsageDetail.EXTRA_SLOT_TIME, SLOT_TIME);
|
||||||
|
when(mFragment.getArguments()).thenReturn(bundle);
|
||||||
|
|
||||||
|
mFragment.initHeader();
|
||||||
|
|
||||||
|
ArgumentCaptor<CharSequence> captor = ArgumentCaptor.forClass(CharSequence.class);
|
||||||
|
verify(mEntityHeaderController).setSummary(captor.capture());
|
||||||
|
assertThat(captor.getValue().toString()).isEqualTo(
|
||||||
|
"Screen time: 1 min\n(12 am-2 am)");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void initHeader_ScreenTimeLessThanAMinBackgroundTwoMinWithSlotTime_hasCorrectSummary() {
|
||||||
|
final long backgroundTimeTwoMinutes = 120000;
|
||||||
|
final long foregroundTimeTwoMinutes = 120000;
|
||||||
|
final long screenOnTimeLessThanAMinute = 59999;
|
||||||
|
Bundle bundle = new Bundle();
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, backgroundTimeTwoMinutes);
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, foregroundTimeTwoMinutes);
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_SCREEN_ON_TIME, screenOnTimeLessThanAMinute);
|
||||||
|
bundle.putString(AdvancedPowerUsageDetail.EXTRA_SLOT_TIME, SLOT_TIME);
|
||||||
|
when(mFragment.getArguments()).thenReturn(bundle);
|
||||||
|
|
||||||
|
mFragment.initHeader();
|
||||||
|
|
||||||
|
ArgumentCaptor<CharSequence> captor = ArgumentCaptor.forClass(CharSequence.class);
|
||||||
|
verify(mEntityHeaderController).setSummary(captor.capture());
|
||||||
|
assertThat(captor.getValue().toString()).isEqualTo(
|
||||||
|
"Screen time: less than a min\nBackground: 2 min\n(12 am-2 am)");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void initHeader_ScreenTimeLessAMinBackgroundLessAMinWithSlotTime_hasCorrectSummary() {
|
||||||
|
final long backgroundTimeLessThanAMinute = 59999;
|
||||||
|
final long foregroundTimeTwoMinutes = 120000;
|
||||||
|
final long screenOnTimeLessThanAMinute = 59999;
|
||||||
|
Bundle bundle = new Bundle();
|
||||||
|
bundle.putLong(
|
||||||
|
AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, backgroundTimeLessThanAMinute);
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, foregroundTimeTwoMinutes);
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_SCREEN_ON_TIME, screenOnTimeLessThanAMinute);
|
||||||
|
bundle.putString(AdvancedPowerUsageDetail.EXTRA_SLOT_TIME, SLOT_TIME);
|
||||||
|
when(mFragment.getArguments()).thenReturn(bundle);
|
||||||
|
|
||||||
|
mFragment.initHeader();
|
||||||
|
|
||||||
|
ArgumentCaptor<CharSequence> captor = ArgumentCaptor.forClass(CharSequence.class);
|
||||||
|
verify(mEntityHeaderController).setSummary(captor.capture());
|
||||||
|
assertThat(captor.getValue().toString()).isEqualTo(
|
||||||
|
"Screen time: less than a min\nBackground: less than a min\n(12 am-2 am)");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void initHeader_ScreenTimeLessThanAMinBackgroundZeroWithSlotTime_hasCorrectSummary() {
|
||||||
|
final long backgroundTimezero = 0;
|
||||||
|
final long foregroundTimeTwoMinutes = 120000;
|
||||||
|
final long screenOnTimeLessThanAMinute = 59999;
|
||||||
|
Bundle bundle = new Bundle();
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, backgroundTimezero);
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, foregroundTimeTwoMinutes);
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_SCREEN_ON_TIME, screenOnTimeLessThanAMinute);
|
||||||
|
bundle.putString(AdvancedPowerUsageDetail.EXTRA_SLOT_TIME, SLOT_TIME);
|
||||||
|
when(mFragment.getArguments()).thenReturn(bundle);
|
||||||
|
|
||||||
|
mFragment.initHeader();
|
||||||
|
|
||||||
|
ArgumentCaptor<CharSequence> captor = ArgumentCaptor.forClass(CharSequence.class);
|
||||||
|
verify(mEntityHeaderController).setSummary(captor.capture());
|
||||||
|
assertThat(captor.getValue().toString()).isEqualTo(
|
||||||
|
"Screen time: less than a min\n(12 am-2 am)");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void initHeader_systemUidWithChartIsEnabled_notNullSummary() {
|
public void initHeader_systemUidWithChartIsEnabled_notNullSummary() {
|
||||||
Bundle bundle = new Bundle(3);
|
Bundle bundle = new Bundle();
|
||||||
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, 240000);
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, 240000);
|
||||||
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, 120000);
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, 120000);
|
||||||
|
bundle.putLong(AdvancedPowerUsageDetail.EXTRA_SCREEN_ON_TIME, 120000);
|
||||||
bundle.putInt(AdvancedPowerUsageDetail.EXTRA_UID, Process.SYSTEM_UID);
|
bundle.putInt(AdvancedPowerUsageDetail.EXTRA_UID, Process.SYSTEM_UID);
|
||||||
when(mFragment.getArguments()).thenReturn(bundle);
|
when(mFragment.getArguments()).thenReturn(bundle);
|
||||||
|
|
||||||
@@ -502,6 +677,8 @@ public class AdvancedPowerUsageDetailTest {
|
|||||||
.isEqualTo(0);
|
.isEqualTo(0);
|
||||||
assertThat(mBundle.getLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME))
|
assertThat(mBundle.getLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME))
|
||||||
.isEqualTo(0);
|
.isEqualTo(0);
|
||||||
|
assertThat(mBundle.getLong(AdvancedPowerUsageDetail.EXTRA_SCREEN_ON_TIME))
|
||||||
|
.isEqualTo(0);
|
||||||
assertThat(mBundle.getString(AdvancedPowerUsageDetail.EXTRA_POWER_USAGE_PERCENT))
|
assertThat(mBundle.getString(AdvancedPowerUsageDetail.EXTRA_POWER_USAGE_PERCENT))
|
||||||
.isEqualTo(USAGE_PERCENT);
|
.isEqualTo(USAGE_PERCENT);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user