Update power_anomaly_event proto fields

- add enum PowerAnomalyType/PowerAnomalyKey
- update the func to get anomaly index

Test: manual
Bug: 291689623
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:356be9109080bc54232ff801b739ec10cab4fdfa)
Change-Id: If4e6684c8169dfa3edd4e18a11d518737a3b2840
This commit is contained in:
mxyyiyi
2023-08-15 11:08:29 +08:00
committed by Xinyi Mao
parent ab7f57b17c
commit af8fdee7e3
5 changed files with 36 additions and 48 deletions

View File

@@ -1409,12 +1409,7 @@
<integer-array name="network_mode_3g_deprecated_carrier_id" translatable="false">
</integer-array>
<!-- The following 4 arrays are for power anomaly tips card. Please keep them the same size. -->
<string-array name="power_anomaly_keys" translatable="false">
<item>adaptive_brightness</item>
<item>screen_timeout</item>
</string-array>
<!-- The following 3 arrays are for power anomaly tips card. Please keep them the same size. -->
<string-array name="power_anomaly_titles">
<item>Turn on adaptive brightness to extend battery life</item>
<item>Reduce screen timeout to extend battery life</item>

View File

@@ -36,8 +36,6 @@ public class BatteryTipsController extends BasePreferenceController {
private static final String ROOT_PREFERENCE_KEY = "battery_tips_category";
private static final String CARD_PREFERENCE_KEY = "battery_tips_card";
private final String[] mPowerAnomalyKeys;
@VisibleForTesting
BatteryTipsCardPreference mCardPreference;
@VisibleForTesting
@@ -47,7 +45,6 @@ public class BatteryTipsController extends BasePreferenceController {
super(context, ROOT_PREFERENCE_KEY);
mPowerUsageFeatureProvider = FeatureFactory.getFeatureFactory()
.getPowerUsageFeatureProvider();
mPowerAnomalyKeys = context.getResources().getStringArray(R.array.power_anomaly_keys);
}
private boolean isTipsCardVisible() {
@@ -66,16 +63,6 @@ public class BatteryTipsController extends BasePreferenceController {
mCardPreference = screen.findPreference(CARD_PREFERENCE_KEY);
}
@VisibleForTesting
int getPowerAnomalyEventIndex(String powerAnomalyKey) {
for (int index = 0; index < mPowerAnomalyKeys.length; index++) {
if (mPowerAnomalyKeys[index].equals(powerAnomalyKey)) {
return index;
}
}
return -1;
}
private <T> T getInfo(PowerAnomalyEvent powerAnomalyEvent,
Function<WarningBannerInfo, T> warningBannerInfoSupplier,
Function<WarningItemInfo, T> warningItemInfoSupplier) {
@@ -98,8 +85,9 @@ public class BatteryTipsController extends BasePreferenceController {
return string;
}
if (resourceIndex >= 0) {
string = mContext.getResources().getStringArray(resourceId)[resourceIndex];
String[] stringArray = mContext.getResources().getStringArray(resourceId);
if (resourceIndex >= 0 && resourceIndex < stringArray.length) {
string = stringArray[resourceIndex];
}
return string;
@@ -117,10 +105,11 @@ public class BatteryTipsController extends BasePreferenceController {
}
// Get card preference strings and navigate fragment info
final int index = getPowerAnomalyEventIndex(powerAnomalyEvent.getKey());
final int resourceIndex = powerAnomalyEvent.hasKey()
? powerAnomalyEvent.getKey().getNumber() : -1;
String titleString = getString(powerAnomalyEvent, WarningBannerInfo::getTitleString,
WarningItemInfo::getTitleString, R.array.power_anomaly_titles, index);
WarningItemInfo::getTitleString, R.array.power_anomaly_titles, resourceIndex);
if (titleString.isEmpty()) {
mCardPreference.setVisible(false);
return;
@@ -128,10 +117,10 @@ public class BatteryTipsController extends BasePreferenceController {
String mainBtnString = getString(powerAnomalyEvent,
WarningBannerInfo::getMainButtonString, WarningItemInfo::getMainButtonString,
R.array.power_anomaly_main_btn_strings, index);
R.array.power_anomaly_main_btn_strings, resourceIndex);
String dismissBtnString = getString(powerAnomalyEvent,
WarningBannerInfo::getCancelButtonString, WarningItemInfo::getCancelButtonString,
R.array.power_anomaly_dismiss_btn_strings, index);
R.array.power_anomaly_dismiss_btn_strings, resourceIndex);
String destinationClassName = getString(powerAnomalyEvent,
WarningBannerInfo::getMainButtonDestination,

View File

@@ -11,8 +11,8 @@ message PowerAnomalyEventList {
message PowerAnomalyEvent {
optional string event_id = 1;
optional int64 timestamp = 2;
optional string type = 3; // e.g. settings, apps
optional string key = 4; // e.g. brightness, significant_increase
optional PowerAnomalyType type = 3;
optional PowerAnomalyKey key = 4;
optional float score = 5;
oneof info {
WarningBannerInfo warning_banner_info = 6;
@@ -20,6 +20,25 @@ message PowerAnomalyEvent {
}
}
// NOTE: Please DO NOT delete enum items or change enum values. Use [deprecated = true] instead.
// The enum value will be used to decide the tips card style like icons and colors.
//
// Next id: 2
enum PowerAnomalyType{
SETTINGS_BANNER = 0;
APPS_ITEM = 1;
}
// NOTE: Please DO NOT delete enum items or change enum values. Use [deprecated = true] instead.
// The enum value will be used to decide pre-defined title and button labels.
//
// Next id: 3
enum PowerAnomalyKey{
BRIGHTNESS = 0;
SCREEN_TIMEOUT = 1;
APP = 2;
}
message WarningBannerInfo {
optional string title_string = 1;
optional string description_string = 2;

View File

@@ -16,8 +16,6 @@
package com.android.settings.fuelgauge.batteryusage;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
@@ -68,21 +66,6 @@ public final class BatteryTipsControllerTest {
mBatteryTipsController.mPowerUsageFeatureProvider = mPowerUsageFeatureProvider;
}
@Test
public void parsePowerAnomalyKey_preDefinedKeys_returnTrue() {
final String[] keys = {"adaptive_brightness", "screen_timeout"};
for (int index = 0; index < keys.length; index++) {
assertThat(mBatteryTipsController.getPowerAnomalyEventIndex(keys[index]))
.isEqualTo(index);
}
}
@Test
public void parsePowerAnomalyKey_unknownKey_returnTrue() {
final String key = "unknown_key_for_test";
assertThat(mBatteryTipsController.getPowerAnomalyEventIndex(key)).isEqualTo(-1);
}
@Test
public void handleBatteryTipsCardUpdated_null_hidePreference() {
mBatteryTipsController.handleBatteryTipsCardUpdated(/* powerAnomalyEvents= */ null);

View File

@@ -36,6 +36,8 @@ import com.android.settings.fuelgauge.batteryusage.ConvertUtils;
import com.android.settings.fuelgauge.batteryusage.DeviceBatteryState;
import com.android.settings.fuelgauge.batteryusage.PowerAnomalyEvent;
import com.android.settings.fuelgauge.batteryusage.PowerAnomalyEventList;
import com.android.settings.fuelgauge.batteryusage.PowerAnomalyKey;
import com.android.settings.fuelgauge.batteryusage.PowerAnomalyType;
import com.android.settings.fuelgauge.batteryusage.WarningBannerInfo;
import com.android.settings.fuelgauge.batteryusage.db.AppUsageEventDao;
import com.android.settings.fuelgauge.batteryusage.db.AppUsageEventEntity;
@@ -209,8 +211,8 @@ public class BatteryTestUtils {
/** Create a power anomaly event proto of adaptive brightness. */
public static PowerAnomalyEvent createAdaptiveBrightnessAnomalyEvent() {
return PowerAnomalyEvent.newBuilder()
.setType("settings banner")
.setKey("adaptive_brightness")
.setType(PowerAnomalyType.SETTINGS_BANNER)
.setKey(PowerAnomalyKey.BRIGHTNESS)
.setWarningBannerInfo(WarningBannerInfo.newBuilder()
.setMainButtonDestination(AutoBrightnessSettings.class.getName())
.setMainButtonSourceMetricsCategory(SettingsEnums.SETTINGS_AUTO_BRIGHTNESS)
@@ -221,8 +223,8 @@ public class BatteryTestUtils {
/** Create a power anomaly event proto of screen timeout. */
public static PowerAnomalyEvent createScreenTimeoutAnomalyEvent() {
return PowerAnomalyEvent.newBuilder()
.setType("settings banner")
.setKey("screen_timeout")
.setType(PowerAnomalyType.SETTINGS_BANNER)
.setKey(PowerAnomalyKey.SCREEN_TIMEOUT)
.setWarningBannerInfo(WarningBannerInfo.newBuilder()
.setMainButtonDestination(ScreenTimeoutSettings.class.getName())
.setMainButtonSourceMetricsCategory(SettingsEnums.SCREEN_TIMEOUT)