diff --git a/res/layout/battery_tips_card.xml b/res/layout/battery_tips_card.xml index dde559d4b0f..3eb2eb23cfa 100644 --- a/res/layout/battery_tips_card.xml +++ b/res/layout/battery_tips_card.xml @@ -49,8 +49,7 @@ android:layout_marginEnd="8dp" android:text="@string/battery_tips_card_dismiss_button" android:textAppearance="?android:attr/textAppearanceSmall" - android:textColor="?android:attr/colorAccent" - android:textStyle="bold" /> + android:textColor="?android:attr/textColorPrimary" /> diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsCardPreference.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsCardPreference.java index 61b3e2f1db3..0ab6244e681 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsCardPreference.java +++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsCardPreference.java @@ -18,6 +18,7 @@ package com.android.settings.fuelgauge.batteryusage; import android.app.settings.SettingsEnums; import android.content.Context; +import android.os.Bundle; import android.text.TextUtils; import android.util.AttributeSet; import android.view.View; @@ -30,6 +31,7 @@ import androidx.preference.Preference; import androidx.preference.PreferenceViewHolder; import com.android.settings.R; +import com.android.settings.SettingsActivity; import com.android.settings.core.SubSettingLauncher; import com.android.settings.fuelgauge.PowerUsageFeatureProvider; import com.android.settings.overlay.FeatureFactory; @@ -56,6 +58,8 @@ public class BatteryTipsCardPreference extends Preference implements View.OnClic @VisibleForTesting String mDestinationComponentName; @VisibleForTesting + String mPreferenceHighlightKey; + @VisibleForTesting Integer mSourceMetricsCategory; public BatteryTipsCardPreference(Context context, AttributeSet attrs) { @@ -98,9 +102,10 @@ public class BatteryTipsCardPreference extends Preference implements View.OnClic * Sets the info of target fragment launched by main button. */ public void setMainButtonLauncherInfo(final String destinationClassName, - final Integer sourceMetricsCategory) { + final Integer sourceMetricsCategory, final String highlightKey) { mDestinationComponentName = destinationClassName; mSourceMetricsCategory = sourceMetricsCategory; + mPreferenceHighlightKey = highlightKey; } @Override @@ -110,9 +115,16 @@ public class BatteryTipsCardPreference extends Preference implements View.OnClic if (TextUtils.isEmpty(mDestinationComponentName)) { return; } + Bundle arguments = Bundle.EMPTY; + if (!TextUtils.isEmpty(mPreferenceHighlightKey)) { + arguments = new Bundle(1); + arguments.putString(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY, + mPreferenceHighlightKey); + } new SubSettingLauncher(getContext()) .setDestination(mDestinationComponentName) .setSourceMetricsCategory(mSourceMetricsCategory) + .setArguments(arguments) .launch(); setVisible(false); mMetricsFeatureProvider.action( diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsController.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsController.java index 09e0c77dcba..4da0ee9bf2f 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsController.java +++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsController.java @@ -69,9 +69,9 @@ public class BatteryTipsController extends BasePreferenceController { private T getInfo(PowerAnomalyEvent powerAnomalyEvent, Function warningBannerInfoSupplier, Function warningItemInfoSupplier) { - if (powerAnomalyEvent.hasWarningBannerInfo() && warningBannerInfoSupplier != null) { + if (warningBannerInfoSupplier != null && powerAnomalyEvent.hasWarningBannerInfo()) { return warningBannerInfoSupplier.apply(powerAnomalyEvent.getWarningBannerInfo()); - } else if (powerAnomalyEvent.hasWarningItemInfo() && warningItemInfoSupplier != null) { + } else if (warningItemInfoSupplier != null && powerAnomalyEvent.hasWarningItemInfo()) { return warningItemInfoSupplier.apply(powerAnomalyEvent.getWarningItemInfo()); } return null; @@ -125,20 +125,20 @@ public class BatteryTipsController extends BasePreferenceController { WarningBannerInfo::getCancelButtonString, WarningItemInfo::getCancelButtonString, R.array.power_anomaly_dismiss_btn_strings, resourceIndex); - String destinationClassName = getString(powerAnomalyEvent, - WarningBannerInfo::getMainButtonDestination, - WarningItemInfo::getMainButtonDestination, - -1, -1); + String destinationClassName = getInfo(powerAnomalyEvent, + WarningBannerInfo::getMainButtonDestination, null); Integer sourceMetricsCategory = getInfo(powerAnomalyEvent, - WarningBannerInfo::getMainButtonSourceMetricsCategory, - WarningItemInfo::getMainButtonSourceMetricsCategory); + WarningBannerInfo::getMainButtonSourceMetricsCategory, null); + String preferenceHighlightKey = getInfo(powerAnomalyEvent, + WarningBannerInfo::getMainButtonSourceHighlightKey, null); // Updated card preference and main button fragment launcher mCardPreference.setAnomalyEventId(powerAnomalyEvent.getEventId()); mCardPreference.setTitle(titleString); mCardPreference.setMainButtonLabel(mainBtnString); mCardPreference.setDismissButtonLabel(dismissBtnString); - mCardPreference.setMainButtonLauncherInfo(destinationClassName, sourceMetricsCategory); + mCardPreference.setMainButtonLauncherInfo( + destinationClassName, sourceMetricsCategory, preferenceHighlightKey); mCardPreference.setVisible(true); mMetricsFeatureProvider.action(mContext, diff --git a/src/com/android/settings/fuelgauge/protos/power_anomaly_event.proto b/src/com/android/settings/fuelgauge/protos/power_anomaly_event.proto index c799d7a29fc..644ab9eba54 100644 --- a/src/com/android/settings/fuelgauge/protos/power_anomaly_event.proto +++ b/src/com/android/settings/fuelgauge/protos/power_anomaly_event.proto @@ -47,7 +47,9 @@ message WarningBannerInfo { optional string main_button_destination = 4; // Used in the SubSettingLauncher.setSourceMetricsCategory(). optional int32 main_button_source_metrics_category = 5; - optional string cancel_button_string = 6; + // Used in the SubSettingLauncher.setArguments(). + optional string main_button_source_highlight_key = 6; + optional string cancel_button_string = 7; } message WarningItemInfo { @@ -57,9 +59,5 @@ message WarningItemInfo { optional string title_string = 4; optional string description_string = 5; optional string main_button_string = 6; - // Used in the SubSettingLauncher.setDestination(). - optional string main_button_destination = 7; - // Used in the SubSettingLauncher.setSourceMetricsCategory(). - optional int32 main_button_source_metrics_category = 8; - optional string cancel_button_string = 9; + optional string cancel_button_string = 7; } diff --git a/src/com/android/settings/widget/RadioButtonPickerFragment.java b/src/com/android/settings/widget/RadioButtonPickerFragment.java index 0b597145b1c..9450bb93715 100644 --- a/src/com/android/settings/widget/RadioButtonPickerFragment.java +++ b/src/com/android/settings/widget/RadioButtonPickerFragment.java @@ -33,8 +33,8 @@ import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.R; +import com.android.settings.SettingsPreferenceFragment; import com.android.settings.Utils; -import com.android.settings.core.InstrumentedPreferenceFragment; import com.android.settings.core.PreferenceXmlParserUtils; import com.android.settings.core.PreferenceXmlParserUtils.MetadataFlag; import com.android.settingslib.widget.CandidateInfo; @@ -46,7 +46,10 @@ import java.io.IOException; import java.util.List; import java.util.Map; -public abstract class RadioButtonPickerFragment extends InstrumentedPreferenceFragment implements +/** + * A fragment to handle general radio button picker + */ +public abstract class RadioButtonPickerFragment extends SettingsPreferenceFragment implements SelectorWithWidgetPreference.OnClickListener { @VisibleForTesting diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsCardPreferenceTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsCardPreferenceTest.java index 737717e5bc2..1fe6f4a90c8 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsCardPreferenceTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsCardPreferenceTest.java @@ -29,9 +29,9 @@ import android.content.Context; import android.content.Intent; import android.view.View; +import com.android.settings.DisplaySettings; import com.android.settings.R; import com.android.settings.SettingsActivity; -import com.android.settings.display.AutoBrightnessSettings; import com.android.settings.testutils.BatteryTestUtils; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; @@ -86,9 +86,9 @@ public final class BatteryTipsCardPreferenceTest { verify(mContext).startActivity(any(Intent.class)); final Intent intent = captor.getValue(); assertThat(intent.getStringExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT)) - .isEqualTo(AutoBrightnessSettings.class.getName()); + .isEqualTo(DisplaySettings.class.getName()); assertThat(intent.getIntExtra(MetricsFeatureProvider.EXTRA_SOURCE_METRICS_CATEGORY, -1)) - .isEqualTo(SettingsEnums.SETTINGS_AUTO_BRIGHTNESS); + .isEqualTo(SettingsEnums.DISPLAY); verify(mFeatureFactory.metricsFeatureProvider).action( mContext, SettingsEnums.ACTION_BATTERY_TIPS_CARD_ACCEPT, "BrightnessAnomaly"); } diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsControllerTest.java index 015a295726b..e1ba84e7dbf 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsControllerTest.java @@ -87,8 +87,8 @@ public final class BatteryTipsControllerTest { verify(mBatteryTipsCardPreference).setDismissButtonLabel("Got it"); // Check proto info verify(mBatteryTipsCardPreference).setMainButtonLauncherInfo( - "com.android.settings.display.AutoBrightnessSettings", - 1381); + "com.android.settings.DisplaySettings", + 46, "auto_brightness_entry"); verify(mBatteryTipsCardPreference).setVisible(true); verify(mFeatureFactory.metricsFeatureProvider).action( mContext, SettingsEnums.ACTION_BATTERY_TIPS_CARD_SHOW, "BrightnessAnomaly"); @@ -107,11 +107,12 @@ public final class BatteryTipsControllerTest { verify(mBatteryTipsCardPreference).setDismissButtonLabel("Got it"); verify(mBatteryTipsCardPreference).setMainButtonLauncherInfo( "com.android.settings.display.ScreenTimeoutSettings", - 1852); + 1852, "60000"); verify(mBatteryTipsCardPreference).setVisible(true); verify(mFeatureFactory.metricsFeatureProvider).action( mContext, SettingsEnums.ACTION_BATTERY_TIPS_CARD_SHOW, "ScreenTimeoutAnomaly"); } + @Test public void handleBatteryTipsCardUpdated_screenTimeoutAnomalyHasTitle_showAnomaly() { PowerAnomalyEvent event = BatteryTestUtils.createScreenTimeoutAnomalyEvent(); @@ -132,7 +133,7 @@ public final class BatteryTipsControllerTest { verify(mBatteryTipsCardPreference).setDismissButtonLabel("Got it"); verify(mBatteryTipsCardPreference).setMainButtonLauncherInfo( "com.android.settings.display.ScreenTimeoutSettings", - 1852); + 1852, "60000"); verify(mBatteryTipsCardPreference).setVisible(true); verify(mFeatureFactory.metricsFeatureProvider).action( mContext, SettingsEnums.ACTION_BATTERY_TIPS_CARD_SHOW, "ScreenTimeoutAnomaly"); diff --git a/tests/robotests/src/com/android/settings/testutils/BatteryTestUtils.java b/tests/robotests/src/com/android/settings/testutils/BatteryTestUtils.java index dca15d5d7b3..bf49c36dddd 100644 --- a/tests/robotests/src/com/android/settings/testutils/BatteryTestUtils.java +++ b/tests/robotests/src/com/android/settings/testutils/BatteryTestUtils.java @@ -29,7 +29,7 @@ import android.os.UserManager; import androidx.room.Room; -import com.android.settings.display.AutoBrightnessSettings; +import com.android.settings.DisplaySettings; import com.android.settings.display.ScreenTimeoutSettings; import com.android.settings.fuelgauge.batteryusage.BatteryInformation; import com.android.settings.fuelgauge.batteryusage.ConvertUtils; @@ -215,8 +215,9 @@ public class BatteryTestUtils { .setType(PowerAnomalyType.TYPE_SETTINGS_BANNER) .setKey(PowerAnomalyKey.KEY_BRIGHTNESS) .setWarningBannerInfo(WarningBannerInfo.newBuilder() - .setMainButtonDestination(AutoBrightnessSettings.class.getName()) - .setMainButtonSourceMetricsCategory(SettingsEnums.SETTINGS_AUTO_BRIGHTNESS) + .setMainButtonDestination(DisplaySettings.class.getName()) + .setMainButtonSourceMetricsCategory(SettingsEnums.DISPLAY) + .setMainButtonSourceHighlightKey("auto_brightness_entry") .build()) .build(); } @@ -230,6 +231,7 @@ public class BatteryTestUtils { .setWarningBannerInfo(WarningBannerInfo.newBuilder() .setMainButtonDestination(ScreenTimeoutSettings.class.getName()) .setMainButtonSourceMetricsCategory(SettingsEnums.SCREEN_TIMEOUT) + .setMainButtonSourceHighlightKey("60000") .build()) .build(); }