From 427c9c3187938485346b0000f92cdc5da4f48239 Mon Sep 17 00:00:00 2001 From: mxyyiyi Date: Thu, 8 Aug 2024 13:35:43 +0800 Subject: [PATCH] Migrate Tips Card in battery uasge to Settings Card. before: [Dark-settings]:https://screenshot.googleplex.com/56EiS3PbtRsh5RR [Light-app]:https://screenshot.googleplex.com/8UDuFEkkrLUt53D after: [Dark-settings]:https://screenshot.googleplex.com/3zKxxGi2Awa6s72 [Light-settings]:https://screenshot.googleplex.com/rsgVh9P62x7itUa [Dark-app]:https://screenshot.googleplex.com/56EiS3PbtRsh5RR [Light-app]:https://screenshot.googleplex.com/6bfs2u43nZpHL8y Bug: 357603119 Test: atest BatteryTipsControllerTest Flag: EXEMPT bug fix Change-Id: I25e3b407378b01ef9868326a005554ceb6e94181 --- res/drawable/battery_tips_all_rounded_bg.xml | 22 -- .../battery_tips_all_rounded_bg_ripple.xml | 21 -- .../battery_tips_half_rounded_bottom_bg.xml | 27 -- .../battery_tips_half_rounded_top_bg.xml | 27 -- res/layout/battery_tips_card.xml | 61 ---- res/xml/power_usage_advanced.xml | 2 +- .../batteryusage/AnomalyEventWrapper.java | 13 +- .../BatteryTipsCardPreference.java | 150 --------- .../batteryusage/BatteryTipsController.java | 81 ++--- .../settings/widget/TipCardPreference.kt | 6 + .../BatteryTipsCardPreferenceTest.java | 293 ------------------ .../BatteryTipsControllerTest.java | 177 ++++++----- .../settings/testutils/BatteryTestUtils.java | 22 +- 13 files changed, 178 insertions(+), 724 deletions(-) delete mode 100644 res/drawable/battery_tips_all_rounded_bg.xml delete mode 100644 res/drawable/battery_tips_all_rounded_bg_ripple.xml delete mode 100644 res/drawable/battery_tips_half_rounded_bottom_bg.xml delete mode 100644 res/drawable/battery_tips_half_rounded_top_bg.xml delete mode 100644 res/layout/battery_tips_card.xml delete mode 100644 src/com/android/settings/fuelgauge/batteryusage/BatteryTipsCardPreference.java delete mode 100644 tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsCardPreferenceTest.java diff --git a/res/drawable/battery_tips_all_rounded_bg.xml b/res/drawable/battery_tips_all_rounded_bg.xml deleted file mode 100644 index ba164b97023..00000000000 --- a/res/drawable/battery_tips_all_rounded_bg.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/res/drawable/battery_tips_all_rounded_bg_ripple.xml b/res/drawable/battery_tips_all_rounded_bg_ripple.xml deleted file mode 100644 index 31805704b3b..00000000000 --- a/res/drawable/battery_tips_all_rounded_bg_ripple.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/res/drawable/battery_tips_half_rounded_bottom_bg.xml b/res/drawable/battery_tips_half_rounded_bottom_bg.xml deleted file mode 100644 index 7766de63400..00000000000 --- a/res/drawable/battery_tips_half_rounded_bottom_bg.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/res/drawable/battery_tips_half_rounded_top_bg.xml b/res/drawable/battery_tips_half_rounded_top_bg.xml deleted file mode 100644 index aba1a4fb329..00000000000 --- a/res/drawable/battery_tips_half_rounded_top_bg.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/res/layout/battery_tips_card.xml b/res/layout/battery_tips_card.xml deleted file mode 100644 index 18c326f8b85..00000000000 --- a/res/layout/battery_tips_card.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/res/xml/power_usage_advanced.xml b/res/xml/power_usage_advanced.xml index c1294535a74..f0104e502bf 100644 --- a/res/xml/power_usage_advanced.xml +++ b/res/xml/power_usage_advanced.xml @@ -27,7 +27,7 @@ "com.android.settings.fuelgauge.batteryusage.BatteryTipsController" settings:isPreferenceVisible="false"> - diff --git a/src/com/android/settings/fuelgauge/batteryusage/AnomalyEventWrapper.java b/src/com/android/settings/fuelgauge/batteryusage/AnomalyEventWrapper.java index be5de06e582..c62728b5162 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/AnomalyEventWrapper.java +++ b/src/com/android/settings/fuelgauge/batteryusage/AnomalyEventWrapper.java @@ -28,10 +28,11 @@ import androidx.annotation.Nullable; import com.android.settings.R; import com.android.settings.SettingsActivity; import com.android.settings.core.SubSettingLauncher; +import com.android.settings.widget.TipCardPreference; import java.util.function.Function; -final class AnomalyEventWrapper { +class AnomalyEventWrapper { private static final String TAG = "AnomalyEventWrapper"; private final Context mContext; @@ -235,16 +236,16 @@ final class AnomalyEventWrapper { return mHighlightSlotPair; } - boolean updateTipsCardPreference(BatteryTipsCardPreference preference) { + boolean updateTipsCardPreference(TipCardPreference preference) { final String titleString = getTitleString(); if (TextUtils.isEmpty(titleString)) { return false; } preference.setTitle(titleString); - preference.setIconResourceId(getIconResId()); - preference.setButtonColorResourceId(getColorResId()); - preference.setMainButtonLabel(getMainBtnString()); - preference.setDismissButtonLabel(getDismissBtnString()); + preference.setIconResId(getIconResId()); + preference.setTintColorResId(getColorResId()); + preference.setPrimaryButtonText(getDismissBtnString()); + preference.setSecondaryButtonText(getMainBtnString()); return true; } diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsCardPreference.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsCardPreference.java deleted file mode 100644 index bbd10997509..00000000000 --- a/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsCardPreference.java +++ /dev/null @@ -1,150 +0,0 @@ -/* - * Copyright (C) 2023 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.settings.fuelgauge.batteryusage; - -import android.content.Context; -import android.text.TextUtils; -import android.util.AttributeSet; -import android.view.View; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.TextView; - -import androidx.annotation.VisibleForTesting; -import androidx.preference.Preference; -import androidx.preference.PreferenceViewHolder; - -import com.android.settings.R; - -import com.google.android.material.button.MaterialButton; - -/** A preference for displaying the battery tips card view. */ -public class BatteryTipsCardPreference extends Preference implements View.OnClickListener { - - private static final String TAG = "BatteryTipsCardPreference"; - - interface OnConfirmListener { - void onConfirm(); - } - - interface OnRejectListener { - void onReject(); - } - - private OnConfirmListener mOnConfirmListener; - private OnRejectListener mOnRejectListener; - private int mIconResourceId = 0; - private int mButtonColorResourceId = 0; - - @VisibleForTesting CharSequence mMainButtonLabel; - @VisibleForTesting CharSequence mDismissButtonLabel; - - public BatteryTipsCardPreference(Context context, AttributeSet attrs) { - super(context, attrs); - setLayoutResource(R.layout.battery_tips_card); - setViewId(R.id.battery_tips_card); - setSelectable(false); - } - - public void setOnConfirmListener(OnConfirmListener listener) { - mOnConfirmListener = listener; - } - - public void setOnRejectListener(OnRejectListener listener) { - mOnRejectListener = listener; - } - - /** - * Sets the icon in tips card. - */ - public void setIconResourceId(int resourceId) { - if (mIconResourceId != resourceId) { - mIconResourceId = resourceId; - notifyChanged(); - } - } - - /** - * Sets the background color for main button and the text color for dismiss button. - */ - public void setButtonColorResourceId(int resourceId) { - if (mButtonColorResourceId != resourceId) { - mButtonColorResourceId = resourceId; - notifyChanged(); - } - } - - /** - * Sets the label of main button in tips card. - */ - public void setMainButtonLabel(CharSequence label) { - if (!TextUtils.equals(mMainButtonLabel, label)) { - mMainButtonLabel = label; - notifyChanged(); - } - } - - /** - * Sets the label of dismiss button in tips card. - */ - public void setDismissButtonLabel(CharSequence label) { - if (!TextUtils.equals(mDismissButtonLabel, label)) { - mDismissButtonLabel = label; - notifyChanged(); - } - } - - @Override - public void onClick(View view) { - final int viewId = view.getId(); - if (viewId == R.id.main_button || viewId == R.id.battery_tips_card) { - if (mOnConfirmListener != null) { - mOnConfirmListener.onConfirm(); - } - } else if (viewId == R.id.dismiss_button) { - if (mOnRejectListener != null) { - mOnRejectListener.onReject(); - } - } - } - - @Override - public void onBindViewHolder(PreferenceViewHolder view) { - super.onBindViewHolder(view); - - ((TextView) view.findViewById(R.id.title)).setText(getTitle()); - - final LinearLayout tipsCard = (LinearLayout) view.findViewById(R.id.battery_tips_card); - tipsCard.setOnClickListener(this); - final MaterialButton mainButton = (MaterialButton) view.findViewById(R.id.main_button); - mainButton.setOnClickListener(this); - mainButton.setText(mMainButtonLabel); - final MaterialButton dismissButton = - (MaterialButton) view.findViewById(R.id.dismiss_button); - dismissButton.setOnClickListener(this); - dismissButton.setText(mDismissButtonLabel); - if (mButtonColorResourceId != 0) { - final int colorInt = getContext().getColor(mButtonColorResourceId); - mainButton.setBackgroundColor(colorInt); - dismissButton.setTextColor(colorInt); - } - - if (mIconResourceId != 0) { - ((ImageView) view.findViewById(R.id.icon)).setImageResource(mIconResourceId); - } - } -} diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsController.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsController.java index 821c8680522..405b78651a5 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsController.java +++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsController.java @@ -25,6 +25,7 @@ import androidx.preference.PreferenceScreen; import com.android.internal.annotations.VisibleForTesting; import com.android.settings.core.BasePreferenceController; import com.android.settings.overlay.FeatureFactory; +import com.android.settings.widget.TipCardPreference; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; /** Controls the update for battery tips card */ @@ -50,10 +51,9 @@ public class BatteryTipsController extends BasePreferenceController { void onAnomalyReject(); } - private OnAnomalyConfirmListener mOnAnomalyConfirmListener; - private OnAnomalyRejectListener mOnAnomalyRejectListener; - - @VisibleForTesting BatteryTipsCardPreference mCardPreference; + @VisibleForTesting OnAnomalyConfirmListener mOnAnomalyConfirmListener; + @VisibleForTesting OnAnomalyRejectListener mOnAnomalyRejectListener; + @VisibleForTesting TipCardPreference mCardPreference; @VisibleForTesting AnomalyEventWrapper mAnomalyEventWrapper = null; @VisibleForTesting Boolean mIsAcceptable = false; @@ -117,42 +117,20 @@ public class BatteryTipsController extends BasePreferenceController { return; } - // Set battery tips card listener - mCardPreference.setOnConfirmListener( + mCardPreference.setPrimaryButtonAction( () -> { - mCardPreference.setVisible(false); - if (mOnAnomalyConfirmListener != null) { - mOnAnomalyConfirmListener.onAnomalyConfirm(); - } else if (mAnomalyEventWrapper.updateSystemSettingsIfAvailable() - || mAnomalyEventWrapper.launchSubSetting()) { - mMetricsFeatureProvider.action( - /* attribution= */ SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL, - /* action= */ SettingsEnums.ACTION_BATTERY_TIPS_CARD_ACCEPT, - /* pageId= */ SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL, - /* key= */ ANOMALY_KEY, - /* value= */ anomalyKeyNumber); - } + onBatteryTipsCardDismiss(anomalyKeyNumber); + return null; }); - mCardPreference.setOnRejectListener( + mCardPreference.setSecondaryButtonAction( () -> { - mCardPreference.setVisible(false); - if (mOnAnomalyRejectListener != null) { - mOnAnomalyRejectListener.onAnomalyReject(); - } - // For anomaly events with same record key, dismissed until next time full - // charged. - final String dismissRecordKey = mAnomalyEventWrapper.getDismissRecordKey(); - if (!TextUtils.isEmpty(dismissRecordKey)) { - DatabaseUtils.setDismissedPowerAnomalyKeys(mContext, dismissRecordKey); - } - mMetricsFeatureProvider.action( - /* attribution= */ SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL, - /* action= */ SettingsEnums.ACTION_BATTERY_TIPS_CARD_DISMISS, - /* pageId= */ SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL, - /* key= */ ANOMALY_KEY, - /* value= */ anomalyKeyNumber); + onBatteryTipsCardAccept(anomalyKeyNumber); + return null; }); + mCardPreference.setPrimaryButtonVisibility(true); + mCardPreference.setSecondaryButtonVisibility(true); + mCardPreference.buildContent(); mCardPreference.setVisible(true); mMetricsFeatureProvider.action( /* attribution= */ SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL, @@ -161,4 +139,37 @@ public class BatteryTipsController extends BasePreferenceController { /* key= */ ANOMALY_KEY, /* value= */ anomalyKeyNumber); } + + private void onBatteryTipsCardDismiss(final int anomalyKeyNumber) { + mCardPreference.setVisible(false); + if (mOnAnomalyRejectListener != null) { + mOnAnomalyRejectListener.onAnomalyReject(); + } + // For anomaly events with same record key, dismissed until next time full charged. + final String dismissRecordKey = mAnomalyEventWrapper.getDismissRecordKey(); + if (!TextUtils.isEmpty(dismissRecordKey)) { + DatabaseUtils.setDismissedPowerAnomalyKeys(mContext, dismissRecordKey); + } + mMetricsFeatureProvider.action( + /* attribution= */ SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL, + /* action= */ SettingsEnums.ACTION_BATTERY_TIPS_CARD_DISMISS, + /* pageId= */ SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL, + /* key= */ ANOMALY_KEY, + /* value= */ anomalyKeyNumber); + } + + private void onBatteryTipsCardAccept(final int anomalyKeyNumber) { + mCardPreference.setVisible(false); + if (mOnAnomalyConfirmListener != null) { + mOnAnomalyConfirmListener.onAnomalyConfirm(); + } else if (mAnomalyEventWrapper.updateSystemSettingsIfAvailable() + || mAnomalyEventWrapper.launchSubSetting()) { + mMetricsFeatureProvider.action( + /* attribution= */ SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL, + /* action= */ SettingsEnums.ACTION_BATTERY_TIPS_CARD_ACCEPT, + /* pageId= */ SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL, + /* key= */ ANOMALY_KEY, + /* value= */ anomalyKeyNumber); + } + } } diff --git a/src/com/android/settings/widget/TipCardPreference.kt b/src/com/android/settings/widget/TipCardPreference.kt index 0ae7d2a66f8..0ca0272a031 100644 --- a/src/com/android/settings/widget/TipCardPreference.kt +++ b/src/com/android/settings/widget/TipCardPreference.kt @@ -19,6 +19,7 @@ package com.android.settings.widget import android.content.Context import android.content.res.Resources import android.util.AttributeSet +import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.res.vectorResource import com.android.settings.spa.preference.ComposePreference @@ -37,6 +38,9 @@ constructor( /** A icon resource id for displaying icon on tips card. */ var iconResId: Int? = null + /** A color resource id for displaying icon and button text on tips card. */ + var tintColorResId: Int? = null + /** The primary button's text. */ var primaryButtonText: String = "" @@ -85,6 +89,8 @@ constructor( title = title?.toString() ?: "", text = summary?.toString() ?: "", buttons = listOfNotNull(configPrimaryButton(), configSecondaryButton()), + tintColor = tintColorResId?.let { Color(context.getColor(it)) } + ?: Color.Unspecified, onDismiss = onDismiss, imageVector = iconResId diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsCardPreferenceTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsCardPreferenceTest.java deleted file mode 100644 index 5f863011915..00000000000 --- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsCardPreferenceTest.java +++ /dev/null @@ -1,293 +0,0 @@ -/* - * Copyright (C) 2023 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.settings.fuelgauge.batteryusage; - -import static com.google.common.truth.Truth.assertThat; - -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.doNothing; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import android.app.settings.SettingsEnums; -import android.content.Context; -import android.content.Intent; -import android.provider.Settings; -import android.util.Pair; -import android.view.View; - -import com.android.settings.DisplaySettings; -import com.android.settings.R; -import com.android.settings.SettingsActivity; -import com.android.settings.testutils.BatteryTestUtils; -import com.android.settings.testutils.FakeFeatureFactory; -import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.ArgumentCaptor; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.robolectric.RobolectricTestRunner; -import org.robolectric.RuntimeEnvironment; - -import java.util.Map; -import java.util.Optional; -import java.util.TimeZone; - -@RunWith(RobolectricTestRunner.class) -public final class BatteryTipsCardPreferenceTest { - - private Context mContext; - private FakeFeatureFactory mFeatureFactory; - private BatteryTipsCardPreference mBatteryTipsCardPreference; - private PowerUsageAdvanced mPowerUsageAdvanced; - private BatteryTipsController mBatteryTipsController; - private BatteryChartPreferenceController mBatteryChartPreferenceController; - - @Mock private View mFakeView; - @Mock private BatteryUsageBreakdownController mBatteryUsageBreakdownController; - @Mock private BatteryDiffEntry mFakeEntry; - - @Before - public void setUp() { - MockitoAnnotations.initMocks(this); - TimeZone.setDefault(TimeZone.getTimeZone("GMT+8")); - mContext = spy(RuntimeEnvironment.application); - mFeatureFactory = FakeFeatureFactory.setupForTest(); - mBatteryTipsCardPreference = new BatteryTipsCardPreference(mContext, /* attrs= */ null); - mBatteryTipsController = new BatteryTipsController(mContext); - mBatteryChartPreferenceController = - spy(new BatteryChartPreferenceController(mContext, null, null)); - mBatteryChartPreferenceController.mPrefContext = mContext; - mBatteryTipsController.mCardPreference = mBatteryTipsCardPreference; - - mPowerUsageAdvanced = spy(new PowerUsageAdvanced()); - doReturn(mContext).when(mPowerUsageAdvanced).getContext(); - mPowerUsageAdvanced.mBatteryTipsController = mBatteryTipsController; - mPowerUsageAdvanced.mBatteryChartPreferenceController = mBatteryChartPreferenceController; - mPowerUsageAdvanced.mBatteryUsageBreakdownController = mBatteryUsageBreakdownController; - mPowerUsageAdvanced.mBatteryLevelData = - Optional.of( - new BatteryLevelData( - Map.of( - 1694354400000L, 1, // 2023-09-10 22:00:00 - 1694361600000L, 2, // 2023-09-11 00:00:00 - 1694368800000L, 3))); // 2023-09-11 02:00:00 - doReturn("TestEntriesKey").when(mFakeEntry).getKey(); - } - - @Test - public void constructor_returnExpectedResult() { - assertThat(mBatteryTipsCardPreference.getLayoutResource()) - .isEqualTo(R.layout.battery_tips_card); - } - - @Test - public void onClick_mainBtnOfSettingsAnomalyLaunchPage_getAdaptiveBrightnessLauncher() { - final ArgumentCaptor captor = ArgumentCaptor.forClass(Intent.class); - PowerAnomalyEvent adaptiveBrightnessAnomaly = - BatteryTestUtils.createAdaptiveBrightnessAnomalyEvent(/* changeSettings= */ false); - when(mFeatureFactory.powerUsageFeatureProvider.isBatteryTipsEnabled()).thenReturn(true); - when(mFakeView.getId()).thenReturn(R.id.main_button); - doNothing().when(mContext).startActivity(captor.capture()); - - mPowerUsageAdvanced.onDisplayAnomalyEventUpdated( - adaptiveBrightnessAnomaly, adaptiveBrightnessAnomaly); - mBatteryTipsCardPreference.onClick(mFakeView); - - assertThat(mBatteryTipsCardPreference.isVisible()).isFalse(); - verify(mContext).startActivity(any(Intent.class)); - final Intent intent = captor.getValue(); - assertThat(intent.getStringExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT)) - .isEqualTo(DisplaySettings.class.getName()); - assertThat(intent.getIntExtra(MetricsFeatureProvider.EXTRA_SOURCE_METRICS_CATEGORY, -1)) - .isEqualTo(SettingsEnums.DISPLAY); - verify(mFeatureFactory.metricsFeatureProvider) - .action( - SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL, - SettingsEnums.ACTION_BATTERY_TIPS_CARD_SHOW, - SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL, - BatteryTipsController.ANOMALY_KEY, - PowerAnomalyKey.KEY_BRIGHTNESS.getNumber()); - verify(mFeatureFactory.metricsFeatureProvider) - .action( - SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL, - SettingsEnums.ACTION_BATTERY_TIPS_CARD_ACCEPT, - SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL, - BatteryTipsController.ANOMALY_KEY, - PowerAnomalyKey.KEY_BRIGHTNESS.getNumber()); - } - - @Test - public void onClick_mainBtnOfSettingsAnomalyChangeSettings_settingsChanged() - throws Settings.SettingNotFoundException { - Settings.System.putInt( - mContext.getContentResolver(), - Settings.System.SCREEN_BRIGHTNESS_MODE, - Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL); - final ArgumentCaptor captor = ArgumentCaptor.forClass(Intent.class); - PowerAnomalyEvent adaptiveBrightnessAnomaly = - BatteryTestUtils.createAdaptiveBrightnessAnomalyEvent(/* changeSettings= */ true); - when(mFeatureFactory.powerUsageFeatureProvider.isBatteryTipsEnabled()).thenReturn(true); - when(mFakeView.getId()).thenReturn(R.id.main_button); - doNothing().when(mContext).startActivity(captor.capture()); - - mPowerUsageAdvanced.onDisplayAnomalyEventUpdated( - adaptiveBrightnessAnomaly, adaptiveBrightnessAnomaly); - mBatteryTipsCardPreference.onClick(mFakeView); - - assertThat(mBatteryTipsCardPreference.isVisible()).isFalse(); - assertThat( - Settings.System.getInt( - mContext.getContentResolver(), - Settings.System.SCREEN_BRIGHTNESS_MODE)) - .isEqualTo(Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC); - verify(mContext, never()).startActivity(any(Intent.class)); - verify(mFeatureFactory.metricsFeatureProvider) - .action( - SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL, - SettingsEnums.ACTION_BATTERY_TIPS_CARD_SHOW, - SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL, - BatteryTipsController.ANOMALY_KEY, - PowerAnomalyKey.KEY_BRIGHTNESS.getNumber()); - verify(mFeatureFactory.metricsFeatureProvider) - .action( - SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL, - SettingsEnums.ACTION_BATTERY_TIPS_CARD_ACCEPT, - SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL, - BatteryTipsController.ANOMALY_KEY, - PowerAnomalyKey.KEY_BRIGHTNESS.getNumber()); - } - - @Test - public void onClick_dismissBtnOfSettingsAnomaly_cardDismissAndLogged() { - final PowerAnomalyEvent screenTimeoutAnomaly = - BatteryTestUtils.createScreenTimeoutAnomalyEvent(); - DatabaseUtils.removeDismissedPowerAnomalyKeys(mContext); - when(mFeatureFactory.powerUsageFeatureProvider.isBatteryTipsEnabled()).thenReturn(true); - when(mFakeView.getId()).thenReturn(R.id.dismiss_button); - - mPowerUsageAdvanced.onDisplayAnomalyEventUpdated( - screenTimeoutAnomaly, screenTimeoutAnomaly); - mBatteryTipsCardPreference.onClick(mFakeView); - - assertThat(mBatteryTipsCardPreference.isVisible()).isFalse(); - assertThat(DatabaseUtils.getDismissedPowerAnomalyKeys(mContext)).hasSize(1); - assertThat(DatabaseUtils.getDismissedPowerAnomalyKeys(mContext)) - .contains(PowerAnomalyKey.KEY_SCREEN_TIMEOUT.name()); - verify(mFeatureFactory.metricsFeatureProvider) - .action( - SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL, - SettingsEnums.ACTION_BATTERY_TIPS_CARD_SHOW, - SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL, - BatteryTipsController.ANOMALY_KEY, - PowerAnomalyKey.KEY_SCREEN_TIMEOUT.getNumber()); - verify(mFeatureFactory.metricsFeatureProvider) - .action( - SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL, - SettingsEnums.ACTION_BATTERY_TIPS_CARD_DISMISS, - SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL, - BatteryTipsController.ANOMALY_KEY, - PowerAnomalyKey.KEY_SCREEN_TIMEOUT.getNumber()); - } - - @Test - public void onClick_mainBtnOfAppsAnomaly_selectHighlightSlot() { - final PowerAnomalyEvent appsAnomaly = BatteryTestUtils.createAppAnomalyEvent(); - when(mFeatureFactory.powerUsageFeatureProvider.isBatteryTipsEnabled()).thenReturn(true); - when(mFakeView.getId()).thenReturn(R.id.main_button); - doNothing().when(mBatteryChartPreferenceController).selectHighlightSlotIndex(); - when(mPowerUsageAdvanced.findRelatedBatteryDiffEntry(any())).thenReturn(mFakeEntry); - - mPowerUsageAdvanced.onDisplayAnomalyEventUpdated(appsAnomaly, appsAnomaly); - assertHighlightSlotIndexPair(1, 0); - mBatteryTipsCardPreference.onClick(mFakeView); - - assertThat(mBatteryTipsCardPreference.isVisible()).isFalse(); - verify(mContext, never()).startActivity(any(Intent.class)); - verify(mBatteryChartPreferenceController).onHighlightSlotIndexUpdate(eq(1), eq(0)); - verify(mBatteryChartPreferenceController).selectHighlightSlotIndex(); - verify(mFeatureFactory.metricsFeatureProvider) - .action( - SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL, - SettingsEnums.ACTION_BATTERY_TIPS_CARD_SHOW, - SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL, - BatteryTipsController.ANOMALY_KEY, - PowerAnomalyKey.KEY_APP_TOTAL_HIGHER_THAN_USUAL.getNumber()); - verify(mFeatureFactory.metricsFeatureProvider) - .action( - SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL, - SettingsEnums.ACTION_BATTERY_TIPS_CARD_ACCEPT, - SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL, - BatteryTipsController.ANOMALY_KEY, - PowerAnomalyKey.KEY_APP_TOTAL_HIGHER_THAN_USUAL.getNumber()); - } - - @Test - public void onClick_dismissBtnOfAppsAnomaly_keepHighlightSlotIndex() { - final PowerAnomalyEvent appsAnomaly = BatteryTestUtils.createAppAnomalyEvent(); - when(mFeatureFactory.powerUsageFeatureProvider.isBatteryTipsEnabled()).thenReturn(true); - when(mFakeView.getId()).thenReturn(R.id.dismiss_button); - when(mPowerUsageAdvanced.findRelatedBatteryDiffEntry(any())).thenReturn(mFakeEntry); - - mPowerUsageAdvanced.onDisplayAnomalyEventUpdated(appsAnomaly, appsAnomaly); - assertHighlightSlotIndexPair(1, 0); - mBatteryTipsCardPreference.onClick(mFakeView); - - assertThat(mBatteryTipsCardPreference.isVisible()).isFalse(); - verify(mContext, never()).startActivity(any(Intent.class)); - verify(mBatteryChartPreferenceController).onHighlightSlotIndexUpdate(eq(1), eq(0)); - verify(mBatteryChartPreferenceController, never()).selectHighlightSlotIndex(); - verify(mFeatureFactory.metricsFeatureProvider) - .action( - SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL, - SettingsEnums.ACTION_BATTERY_TIPS_CARD_SHOW, - SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL, - BatteryTipsController.ANOMALY_KEY, - PowerAnomalyKey.KEY_APP_TOTAL_HIGHER_THAN_USUAL.getNumber()); - verify(mFeatureFactory.metricsFeatureProvider) - .action( - SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL, - SettingsEnums.ACTION_BATTERY_TIPS_CARD_DISMISS, - SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL, - BatteryTipsController.ANOMALY_KEY, - PowerAnomalyKey.KEY_APP_TOTAL_HIGHER_THAN_USUAL.getNumber()); - } - - private void assertHighlightSlotIndexPair( - int dailyHighlightSlotIndex, int hourlyHighlightSlotIndex) { - assertThat(mPowerUsageAdvanced.mBatteryLevelData.isPresent()).isTrue(); - assertThat(mPowerUsageAdvanced.mHighlightEventWrapper.isPresent()).isTrue(); - Pair slotIndexPair = - mPowerUsageAdvanced - .mHighlightEventWrapper - .get() - .getHighlightSlotPair(mPowerUsageAdvanced.mBatteryLevelData.get()); - assertThat(slotIndexPair) - .isEqualTo(Pair.create(dailyHighlightSlotIndex, hourlyHighlightSlotIndex)); - assertThat(mPowerUsageAdvanced.mBatteryChartPreferenceController.mDailyHighlightSlotIndex) - .isEqualTo(dailyHighlightSlotIndex); - assertThat(mPowerUsageAdvanced.mBatteryChartPreferenceController.mHourlyHighlightSlotIndex) - .isEqualTo(hourlyHighlightSlotIndex); - } -} 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 954437f6440..6c29036b086 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsControllerTest.java @@ -16,8 +16,13 @@ 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.never; import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -29,11 +34,11 @@ import android.os.LocaleList; import com.android.settings.R; import com.android.settings.testutils.BatteryTestUtils; import com.android.settings.testutils.FakeFeatureFactory; +import com.android.settings.widget.TipCardPreference; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; @@ -47,134 +52,156 @@ public final class BatteryTipsControllerTest { private Context mContext; private FakeFeatureFactory mFeatureFactory; private BatteryTipsController mBatteryTipsController; - - @Mock private BatteryTipsCardPreference mBatteryTipsCardPreference; + private TipCardPreference mCardPreference; @Before public void setUp() { MockitoAnnotations.initMocks(this); Locale.setDefault(new Locale("en_US")); - org.robolectric.shadows.ShadowSettings.set24HourTimeFormat(false); TimeZone.setDefault(TimeZone.getTimeZone("UTC")); + mContext = spy(RuntimeEnvironment.application); final Resources resources = spy(mContext.getResources()); resources.getConfiguration().setLocales(new LocaleList(new Locale("en_US"))); doReturn(resources).when(mContext).getResources(); mFeatureFactory = FakeFeatureFactory.setupForTest(); - mBatteryTipsController = new BatteryTipsController(mContext); - mBatteryTipsController.mCardPreference = mBatteryTipsCardPreference; + mBatteryTipsController = spy(new BatteryTipsController(mContext)); + mCardPreference = new TipCardPreference(mContext); + mBatteryTipsController.mCardPreference = mCardPreference; } @Test public void handleBatteryTipsCardUpdated_null_hidePreference() { mBatteryTipsController.handleBatteryTipsCardUpdated(/* powerAnomalyEvents= */ null, false); - verify(mBatteryTipsCardPreference).setVisible(false); + assertThat(mCardPreference.isVisible()).isFalse(); } @Test public void handleBatteryTipsCardUpdated_adaptiveBrightnessAnomaly_showAnomaly() { - PowerAnomalyEvent event = BatteryTestUtils.createAdaptiveBrightnessAnomalyEvent(); + AnomalyEventWrapper anomalyEventWrapper = + spy( + new AnomalyEventWrapper( + mContext, + BatteryTestUtils.createAdaptiveBrightnessAnomalyEvent(true))); when(mFeatureFactory.powerUsageFeatureProvider.isBatteryTipsEnabled()).thenReturn(true); - mBatteryTipsController.handleBatteryTipsCardUpdated( - new AnomalyEventWrapper(mContext, event), false); + mBatteryTipsController.handleBatteryTipsCardUpdated(anomalyEventWrapper, false); - // Check pre-defined string - verify(mBatteryTipsCardPreference) - .setTitle("Turn on adaptive brightness to extend battery life"); - verify(mBatteryTipsCardPreference).setIconResourceId(R.drawable.ic_battery_tips_lightbulb); - verify(mBatteryTipsCardPreference).setButtonColorResourceId(R.color.color_accent_selector); - verify(mBatteryTipsCardPreference).setMainButtonLabel("View Settings"); - verify(mBatteryTipsCardPreference).setDismissButtonLabel("Got it"); - // Check proto info - verify(mBatteryTipsCardPreference).setVisible(true); - verify(mFeatureFactory.metricsFeatureProvider) - .action( - SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL, - SettingsEnums.ACTION_BATTERY_TIPS_CARD_SHOW, - SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL, - BatteryTipsController.ANOMALY_KEY, - PowerAnomalyKey.KEY_BRIGHTNESS.getNumber()); + assertThat(mCardPreference.getTitle()) + .isEqualTo("Turn on adaptive brightness to extend battery life"); + assertThat(mCardPreference.getPrimaryButtonText()).isEqualTo("Got it"); + assertThat(mCardPreference.getSecondaryButtonText()).isEqualTo("View Settings"); + assertThat(mCardPreference.getIconResId()).isEqualTo(R.drawable.ic_battery_tips_lightbulb); + assertThat(mCardPreference.getTintColorResId()).isEqualTo(R.color.color_accent_selector); + assertThat(mCardPreference.getPrimaryButtonVisibility()).isTrue(); + assertThat(mCardPreference.getSecondaryButtonVisibility()).isTrue(); + assertCardButtonActionAndMetrics(anomalyEventWrapper); } @Test public void handleBatteryTipsCardUpdated_screenTimeoutAnomaly_showAnomaly() { - PowerAnomalyEvent event = BatteryTestUtils.createScreenTimeoutAnomalyEvent(); + AnomalyEventWrapper anomalyEventWrapper = + spy( + new AnomalyEventWrapper( + mContext, BatteryTestUtils.createScreenTimeoutAnomalyEvent(true))); when(mFeatureFactory.powerUsageFeatureProvider.isBatteryTipsEnabled()).thenReturn(true); - mBatteryTipsController.handleBatteryTipsCardUpdated( - new AnomalyEventWrapper(mContext, event), false); + mBatteryTipsController.handleBatteryTipsCardUpdated(anomalyEventWrapper, false); - verify(mBatteryTipsCardPreference).setTitle("Reduce screen timeout to extend battery life"); - verify(mBatteryTipsCardPreference).setIconResourceId(R.drawable.ic_battery_tips_lightbulb); - verify(mBatteryTipsCardPreference).setButtonColorResourceId(R.color.color_accent_selector); - verify(mBatteryTipsCardPreference).setMainButtonLabel("View Settings"); - verify(mBatteryTipsCardPreference).setDismissButtonLabel("Got it"); - verify(mBatteryTipsCardPreference).setVisible(true); - verify(mFeatureFactory.metricsFeatureProvider) - .action( - SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL, - SettingsEnums.ACTION_BATTERY_TIPS_CARD_SHOW, - SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL, - BatteryTipsController.ANOMALY_KEY, - PowerAnomalyKey.KEY_SCREEN_TIMEOUT.getNumber()); + assertThat(mCardPreference.getTitle()) + .isEqualTo("Reduce screen timeout to extend battery life"); + assertThat(mCardPreference.getPrimaryButtonText()).isEqualTo("Got it"); + assertThat(mCardPreference.getSecondaryButtonText()).isEqualTo("View Settings"); + assertThat(mCardPreference.getIconResId()).isEqualTo(R.drawable.ic_battery_tips_lightbulb); + assertThat(mCardPreference.getTintColorResId()).isEqualTo(R.color.color_accent_selector); + assertThat(mCardPreference.getPrimaryButtonVisibility()).isTrue(); + assertThat(mCardPreference.getSecondaryButtonVisibility()).isTrue(); + assertCardButtonActionAndMetrics(anomalyEventWrapper); } @Test public void handleBatteryTipsCardUpdated_screenTimeoutAnomalyHasTitle_showAnomaly() { - PowerAnomalyEvent event = BatteryTestUtils.createScreenTimeoutAnomalyEvent(); + PowerAnomalyEvent anomalyEvent = BatteryTestUtils.createScreenTimeoutAnomalyEvent(true); String testTitle = "TestTitle"; - event = - event.toBuilder() + anomalyEvent = + anomalyEvent.toBuilder() .setWarningBannerInfo( - event.getWarningBannerInfo().toBuilder() + anomalyEvent.getWarningBannerInfo().toBuilder() .setTitleString(testTitle) .build()) .build(); + AnomalyEventWrapper anomalyEventWrapper = + spy(new AnomalyEventWrapper(mContext, anomalyEvent)); when(mFeatureFactory.powerUsageFeatureProvider.isBatteryTipsEnabled()).thenReturn(true); - mBatteryTipsController.handleBatteryTipsCardUpdated( - new AnomalyEventWrapper(mContext, event), false); + mBatteryTipsController.handleBatteryTipsCardUpdated(anomalyEventWrapper, false); - verify(mBatteryTipsCardPreference).setTitle(testTitle); - verify(mBatteryTipsCardPreference).setIconResourceId(R.drawable.ic_battery_tips_lightbulb); - verify(mBatteryTipsCardPreference).setButtonColorResourceId(R.color.color_accent_selector); - verify(mBatteryTipsCardPreference).setMainButtonLabel("View Settings"); - verify(mBatteryTipsCardPreference).setDismissButtonLabel("Got it"); - verify(mBatteryTipsCardPreference).setVisible(true); - verify(mFeatureFactory.metricsFeatureProvider) - .action( - SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL, - SettingsEnums.ACTION_BATTERY_TIPS_CARD_SHOW, - SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL, - BatteryTipsController.ANOMALY_KEY, - PowerAnomalyKey.KEY_SCREEN_TIMEOUT.getNumber()); + assertThat(mCardPreference.getTitle()).isEqualTo(testTitle); + assertThat(mCardPreference.getPrimaryButtonText()).isEqualTo("Got it"); + assertThat(mCardPreference.getSecondaryButtonText()).isEqualTo("View Settings"); + assertThat(mCardPreference.getIconResId()).isEqualTo(R.drawable.ic_battery_tips_lightbulb); + assertThat(mCardPreference.getTintColorResId()).isEqualTo(R.color.color_accent_selector); + assertThat(mCardPreference.getPrimaryButtonVisibility()).isTrue(); + assertThat(mCardPreference.getSecondaryButtonVisibility()).isTrue(); + assertCardButtonActionAndMetrics(anomalyEventWrapper); } @Test public void handleBatteryTipsCardUpdated_appAnomaly_showAnomaly() { - PowerAnomalyEvent event = BatteryTestUtils.createAppAnomalyEvent(); + AnomalyEventWrapper anomalyEventWrapper = + spy(new AnomalyEventWrapper(mContext, BatteryTestUtils.createAppAnomalyEvent())); when(mFeatureFactory.powerUsageFeatureProvider.isBatteryTipsEnabled()).thenReturn(true); - AnomalyEventWrapper eventWrapper = new AnomalyEventWrapper(mContext, event); - eventWrapper.setRelatedBatteryDiffEntry(new BatteryDiffEntry(mContext, "", "Chrome", 0)); - mBatteryTipsController.handleBatteryTipsCardUpdated(eventWrapper, false); + anomalyEventWrapper.setRelatedBatteryDiffEntry( + new BatteryDiffEntry(mContext, "", "Chrome", 0)); + mBatteryTipsController.setOnAnomalyConfirmListener( + () -> mBatteryTipsController.acceptTipsCard()); + mBatteryTipsController.handleBatteryTipsCardUpdated(anomalyEventWrapper, true); - verify(mBatteryTipsCardPreference).setTitle("Chrome used more battery than usual"); - verify(mBatteryTipsCardPreference) - .setIconResourceId(R.drawable.ic_battery_tips_warning_icon); - verify(mBatteryTipsCardPreference) - .setButtonColorResourceId(R.color.color_battery_anomaly_app_warning_selector); - verify(mBatteryTipsCardPreference).setMainButtonLabel("Check"); - verify(mBatteryTipsCardPreference).setDismissButtonLabel("Got it"); - verify(mBatteryTipsCardPreference).setVisible(true); + assertThat(mCardPreference.getTitle()).isEqualTo("Chrome used more battery than usual"); + assertThat(mCardPreference.getPrimaryButtonText()).isEqualTo("Got it"); + assertThat(mCardPreference.getSecondaryButtonText()).isEqualTo("Check"); + assertThat(mCardPreference.getIconResId()) + .isEqualTo(R.drawable.ic_battery_tips_warning_icon); + assertThat(mCardPreference.getTintColorResId()) + .isEqualTo(R.color.color_battery_anomaly_app_warning_selector); + assertThat(mCardPreference.getPrimaryButtonVisibility()).isTrue(); + assertThat(mCardPreference.getSecondaryButtonVisibility()).isTrue(); + assertThat(mCardPreference.isVisible()).isTrue(); + assertCardButtonActionAndMetrics(anomalyEventWrapper); + } + + private void assertCardButtonActionAndMetrics(final AnomalyEventWrapper anomalyEventWrapper) { + when(anomalyEventWrapper.updateSystemSettingsIfAvailable()).thenReturn(true); + + final int powerAnomalyKeyNumber = anomalyEventWrapper.getAnomalyKeyNumber(); + assertCardMetrics(SettingsEnums.ACTION_BATTERY_TIPS_CARD_SHOW, powerAnomalyKeyNumber); + assertThat(mCardPreference.isVisible()).isTrue(); + + // Check accept button action + mCardPreference.setVisible(true); + mCardPreference.getSecondaryButtonAction().invoke(); + assertCardMetrics(SettingsEnums.ACTION_BATTERY_TIPS_CARD_ACCEPT, powerAnomalyKeyNumber); + assertThat(mCardPreference.isVisible()).isFalse(); + final boolean isAppAnomalyCard = powerAnomalyKeyNumber > 1; + verify(anomalyEventWrapper, isAppAnomalyCard ? never() : times(1)) + .updateSystemSettingsIfAvailable(); + + // Check reject button action + mCardPreference.setVisible(true); + mCardPreference.getPrimaryButtonAction().invoke(); + assertCardMetrics(SettingsEnums.ACTION_BATTERY_TIPS_CARD_DISMISS, powerAnomalyKeyNumber); + assertThat(mCardPreference.isVisible()).isFalse(); + } + + private void assertCardMetrics(final int action, final int powerAnomalyKeyNumber) { verify(mFeatureFactory.metricsFeatureProvider) .action( SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL, - SettingsEnums.ACTION_BATTERY_TIPS_CARD_SHOW, + action, SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL, BatteryTipsController.ANOMALY_KEY, - PowerAnomalyKey.KEY_APP_TOTAL_HIGHER_THAN_USUAL.getNumber()); + powerAnomalyKeyNumber); } } diff --git a/tests/robotests/src/com/android/settings/testutils/BatteryTestUtils.java b/tests/robotests/src/com/android/settings/testutils/BatteryTestUtils.java index a151632de15..951f2f00137 100644 --- a/tests/robotests/src/com/android/settings/testutils/BatteryTestUtils.java +++ b/tests/robotests/src/com/android/settings/testutils/BatteryTestUtils.java @@ -264,18 +264,28 @@ public class BatteryTestUtils { /** Create a power anomaly event proto of screen timeout. */ public static PowerAnomalyEvent createScreenTimeoutAnomalyEvent() { + return createScreenTimeoutAnomalyEvent(false); + } + + /** Create a power anomaly event proto of screen timeout. */ + public static PowerAnomalyEvent createScreenTimeoutAnomalyEvent(boolean changeSettings) { + WarningBannerInfo.Builder warningBannerInfoBuilder = + WarningBannerInfo.newBuilder() + .setMainButtonDestination(ScreenTimeoutSettings.class.getName()) + .setMainButtonSourceMetricsCategory(SettingsEnums.SCREEN_TIMEOUT) + .setMainButtonSourceHighlightKey("60000"); + if (changeSettings) { + warningBannerInfoBuilder + .setMainButtonConfigSettingsName(Settings.System.SCREEN_OFF_TIMEOUT) + .setMainButtonConfigSettingsValue(60000); + } return PowerAnomalyEvent.newBuilder() .setEventId("ScreenTimeoutAnomaly") .setType(PowerAnomalyType.TYPE_SETTINGS_BANNER) .setKey(PowerAnomalyKey.KEY_SCREEN_TIMEOUT) .setDismissRecordKey(PowerAnomalyKey.KEY_SCREEN_TIMEOUT.name()) .setScore(1.1f) - .setWarningBannerInfo( - WarningBannerInfo.newBuilder() - .setMainButtonDestination(ScreenTimeoutSettings.class.getName()) - .setMainButtonSourceMetricsCategory(SettingsEnums.SCREEN_TIMEOUT) - .setMainButtonSourceHighlightKey("60000") - .build()) + .setWarningBannerInfo(warningBannerInfoBuilder.build()) .build(); }