Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 759761a5 authored by mxyyiyi's avatar mxyyiyi
Browse files

[UR] Pass warning chip arguments to Allow background usage screen.

Bug: 400626521
Bug: 350657779
Test: atest BatteryOptimizationModePreferenceControllerTest
Flag: EXEMPT for simple feature
Change-Id: I938b3ee240d0b032cf106fa116beaf65a5e13510
parent b69c9488
Loading
Loading
Loading
Loading
+19 −1
Original line number Diff line number Diff line
@@ -45,13 +45,19 @@ public class BatteryOptimizationModePreferenceController extends BasePreferenceC
    @Nullable @VisibleForTesting MainSwitchPreference mBackgroundUsageAllowabilityPreference;
    @Nullable @VisibleForTesting SelectorWithWidgetPreference mOptimizedPreference;
    @Nullable @VisibleForTesting SelectorWithWidgetPreference mUnrestrictedPreference;
    @Nullable @VisibleForTesting String mHintPrefKey;
    @Nullable @VisibleForTesting String mHintText;

    public BatteryOptimizationModePreferenceController(
            @NonNull Context context,
            @NonNull String preferenceKey,
            @NonNull BatteryOptimizeUtils batteryOptimizeUtils) {
            @NonNull BatteryOptimizeUtils batteryOptimizeUtils,
            @Nullable String hintPrefKey,
            @Nullable String hintText) {
        super(context, preferenceKey);
        mBatteryOptimizeUtils = batteryOptimizeUtils;
        mHintPrefKey = hintPrefKey;
        mHintText = hintText;
    }

    @Override
@@ -72,6 +78,7 @@ public class BatteryOptimizationModePreferenceController extends BasePreferenceC
        mOptimizedPreference = screen.findPreference(KEY_OPTIMIZED_PREF);
        mUnrestrictedPreference = screen.findPreference(KEY_UNRESTRICTED_PREF);
        initPreferences();
        initPreferenceHint(screen);
    }

    @VisibleForTesting
@@ -107,6 +114,17 @@ public class BatteryOptimizationModePreferenceController extends BasePreferenceC
        }
    }

    @VisibleForTesting
    void initPreferenceHint(@NonNull PreferenceScreen screen) {
        if (mHintPrefKey == null || mHintText == null) {
            return;
        }
        final Preference preference = screen.findPreference(mHintPrefKey);
        if (preference instanceof WarningFrameSelectorPreference) {
            ((WarningFrameSelectorPreference) preference).setHint(mHintText);
        }
    }

    @VisibleForTesting
    void updatePreferences(int optimizationMode) {
        if (mBackgroundUsageAllowabilityPreference == null
+11 −1
Original line number Diff line number Diff line
@@ -55,6 +55,8 @@ public class PowerBackgroundUsageDetail extends DashboardFragment {
    public static final String EXTRA_POWER_USAGE_AMOUNT = "extra_power_usage_amount";
    public static final String EXTRA_ICON_ID = "extra_icon_id";
    public static final String EXTRA_LAUNCH_SOURCE = "extra_launch_source";
    public static final String EXTRA_HINT_PREF_KEY = "extra_hint_pref_key";
    public static final String EXTRA_HINT_TEXT = "extra_hint_text";

    /** Launch Source type of current fragment. */
    public enum LaunchSourceType {
@@ -145,10 +147,18 @@ public class PowerBackgroundUsageDetail extends DashboardFragment {

    @Override
    protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
        final Bundle bundle = getArguments();
        final String hintPrefKey = bundle.getString(EXTRA_HINT_PREF_KEY);
        final String hintText = bundle.getString(EXTRA_HINT_TEXT);

        final List<AbstractPreferenceController> controllers = new ArrayList<>(1);
        controllers.add(
                new BatteryOptimizationModePreferenceController(
                        context, KEY_BATTERY_OPTIMIZATION_MODE_CATEGORY, mBatteryOptimizeUtils));
                        context,
                        KEY_BATTERY_OPTIMIZATION_MODE_CATEGORY,
                        mBatteryOptimizeUtils,
                        hintPrefKey,
                        hintText));

        return controllers;
    }
+3 −1
Original line number Diff line number Diff line
@@ -105,11 +105,13 @@ message BannerButtonInfo {
  }
}

// Next id: 4
// Next id: 6
message ViewSettings {
  optional string settings_destination = 1;
  optional int32 source_metrics_category = 2;
  optional string source_highlight_key = 3;
  optional string hint_pref_key = 4;
  optional string hint_text = 5;
}

// Next id: 2
+46 −1
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import static com.google.common.truth.Truth.assertThat;

import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.never;
@@ -28,6 +29,7 @@ import static org.mockito.Mockito.verify;

import android.content.Context;

import androidx.preference.PreferenceScreen;
import androidx.test.core.app.ApplicationProvider;

import com.android.settingslib.widget.MainSwitchPreference;
@@ -54,6 +56,8 @@ public class BatteryOptimizationModePreferenceControllerTest {
    @Mock MainSwitchPreference mBackgroundUsageAllowabilityPreference;
    @Mock SelectorWithWidgetPreference mOptimizedPreference;
    @Mock SelectorWithWidgetPreference mUnrestrictedPreference;
    @Mock WarningFramePreference mWarningFramePreference;
    @Mock WarningFrameSelectorPreference mWarningFrameSelectorPreference;

    @Before
    public void setUp() throws Exception {
@@ -64,7 +68,7 @@ public class BatteryOptimizationModePreferenceControllerTest {
        mBackgroundUsageController =
                spy(
                        new BatteryOptimizationModePreferenceController(
                                mContext, "test", mBatteryOptimizeUtils));
                                mContext, "test", mBatteryOptimizeUtils, null, null));
        mBackgroundUsageController.mBackgroundUsageAllowabilityPreference =
                mBackgroundUsageAllowabilityPreference;
        mBackgroundUsageController.mOptimizedPreference = mOptimizedPreference;
@@ -129,6 +133,47 @@ public class BatteryOptimizationModePreferenceControllerTest {
        verifyPreferences(mTestMode);
    }

    @Test
    public void initPreferenceHint_withHintInfoUnsupportedPrefType_doNothing() {
        final PreferenceScreen screen = spy(new PreferenceScreen(mContext, null));
        mBackgroundUsageController.mHintPrefKey = "test_hint";
        mBackgroundUsageController.mHintText = "test hint";
        doReturn(mWarningFramePreference)
                .when(screen)
                .findPreference(mBackgroundUsageController.mHintPrefKey);

        mBackgroundUsageController.initPreferenceHint(screen);

        verify(mWarningFramePreference, never()).setHint(any());
    }

    @Test
    public void initPreferenceHint_withHintInfoSupportedPrefType_setHint() {
        final PreferenceScreen screen = spy(new PreferenceScreen(mContext, null));
        mBackgroundUsageController.mHintPrefKey = "test_hint";
        mBackgroundUsageController.mHintText = "test hint";
        doReturn(mWarningFrameSelectorPreference)
                .when(screen)
                .findPreference(mBackgroundUsageController.mHintPrefKey);

        mBackgroundUsageController.initPreferenceHint(screen);

        verify(mWarningFrameSelectorPreference).setHint(eq(mBackgroundUsageController.mHintText));
    }

    @Test
    public void initPreferenceHint_lackHintInfo_doNothing() {
        final PreferenceScreen screen = spy(new PreferenceScreen(mContext, null));
        mBackgroundUsageController.mHintPrefKey = "test_hint";
        doReturn(mWarningFrameSelectorPreference)
                .when(screen)
                .findPreference(mBackgroundUsageController.mHintPrefKey);

        mBackgroundUsageController.initPreferenceHint(screen);

        verify(mWarningFramePreference, never()).setHint(any());
    }

    @Test
    public void handleBatteryOptimizeModeUpdated_modeChange_setExpectedPrefStatus() {
        mTestMode = BatteryOptimizeUtils.MODE_RESTRICTED;