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

Commit b8757523 authored by ykhung's avatar ykhung
Browse files

Add isBatteryManagerSupported() to control adaptive preferences page

Add isBatteryManagerSupported() in the PowerUsageFeatureProvider to
support controlling the adaptive preferences page dynamically

Bug: 229558366
Test: presubmit
Change-Id: Iffb552feb9e08ca72f2970eb778cd3fcd18f0b7e
parent fec083b2
Loading
Loading
Loading
Loading
+5 −15
Original line number Diff line number Diff line
@@ -39,21 +39,11 @@ public interface PowerUsageFeatureProvider {
     */
    boolean isLocationSettingEnabled(String[] packages);

    /**
     * Check whether additional battery info feature is enabled.
     */
    boolean isAdditionalBatteryInfoEnabled();

    /**
     * Gets an {@link Intent} to show additional battery info.
     */
    Intent getAdditionalBatteryInfoIntent();

    /**
     * Check whether advanced ui is enabled
     */
    boolean isAdvancedUiEnabled();

    /**
     * Check whether it is type service
     */
@@ -64,11 +54,6 @@ public interface PowerUsageFeatureProvider {
     */
    boolean isTypeSystem(int uid, String[] packages);

    /**
     * Check whether the toggle for power accounting is enabled
     */
    boolean isPowerAccountingToggleEnabled();

    /**
     * Returns an improved prediction for battery time remaining.
     */
@@ -130,6 +115,11 @@ public interface PowerUsageFeatureProvider {
     */
    boolean isAdaptiveChargingSupported();

    /**
     * Checks whether battery manager feature is supported in this device
     */
    boolean isBatteryManagerSupported();

    /**
     * Returns {@code true} if current defender mode is extra defend
     */
+5 −15
Original line number Diff line number Diff line
@@ -75,26 +75,11 @@ public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider
        return false;
    }

    @Override
    public boolean isAdditionalBatteryInfoEnabled() {
        return false;
    }

    @Override
    public Intent getAdditionalBatteryInfoIntent() {
        return null;
    }

    @Override
    public boolean isAdvancedUiEnabled() {
        return true;
    }

    @Override
    public boolean isPowerAccountingToggleEnabled() {
        return true;
    }

    @Override
    public Estimate getEnhancedBatteryPrediction(Context context) {
        return null;
@@ -146,6 +131,11 @@ public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider
        return false;
    }

    @Override
    public boolean isBatteryManagerSupported() {
        return true;
    }

    @Override
    public Intent getResumeChargeIntent(boolean isDockDefender) {
        return null;
+4 −5
Original line number Diff line number Diff line
@@ -28,11 +28,10 @@ import com.android.settings.core.BasePreferenceController;
import com.android.settings.fuelgauge.PowerUsageFeatureProvider;
import com.android.settings.overlay.FeatureFactory;

/**
 * Preference controller to control the battery manager
 */
/** Preference controller to control the battery manager */
public class BatteryManagerPreferenceController extends BasePreferenceController {
    private static final String KEY_BATTERY_MANAGER = "smart_battery_manager";

    private PowerUsageFeatureProvider mPowerUsageFeatureProvider;
    private AppOpsManager mAppOpsManager;
    private UserManager mUserManager;
@@ -50,7 +49,8 @@ public class BatteryManagerPreferenceController extends BasePreferenceController

    @Override
    public int getAvailabilityStatus() {
        return AVAILABLE_UNSEARCHABLE;
        return mPowerUsageFeatureProvider.isBatteryManagerSupported()
                ? AVAILABLE_UNSEARCHABLE : UNSUPPORTED_ON_DEVICE;
    }

    @Override
@@ -59,7 +59,6 @@ public class BatteryManagerPreferenceController extends BasePreferenceController
        if (!mEnableAppBatteryUsagePage) {
            final int num = BatteryTipUtils.getRestrictedAppsList(mAppOpsManager,
                    mUserManager).size();

            updateSummary(preference, num);
        }
    }
+0 −10
Original line number Diff line number Diff line
@@ -105,16 +105,6 @@ public class PowerUsageFeatureProviderImplTest {
        assertThat(mPowerFeatureProvider.isTypeSystem(UID_OTHER, null)).isFalse();
    }

    @Test
    public void testIsAdvancedUiEnabled_returnTrue() {
        assertThat(mPowerFeatureProvider.isAdvancedUiEnabled()).isTrue();
    }

    @Test
    public void testIsPowerAccountingToggleEnabled_returnTrue() {
        assertThat(mPowerFeatureProvider.isPowerAccountingToggleEnabled()).isTrue();
    }

    @Test
    public void testIsSmartBatterySupported_smartBatterySupported_returnTrue() {
        when(mContext.getResources().getBoolean(
+20 −1
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import android.provider.Settings;

import androidx.preference.Preference;

import com.android.settings.fuelgauge.PowerUsageFeatureProvider;
import com.android.settings.testutils.FakeFeatureFactory;

import org.junit.Before;
@@ -48,6 +49,7 @@ public class BatteryManagerPreferenceControllerTest {
    private Context mContext;
    private Preference mPreference;
    private FakeFeatureFactory mFeatureFactory;
    private PowerUsageFeatureProvider mPowerUsageFeatureProvider;
    private BatteryManagerPreferenceController mController;


@@ -60,6 +62,7 @@ public class BatteryManagerPreferenceControllerTest {
        mFeatureFactory = FakeFeatureFactory.setupForTest();
        mPreference = new Preference(mContext);
        mController = new BatteryManagerPreferenceController(mContext);
        mPowerUsageFeatureProvider = mFeatureFactory.powerUsageFeatureProvider;
    }

    @Test
@@ -71,7 +74,7 @@ public class BatteryManagerPreferenceControllerTest {

    @Test
    public void updateState_smartBatteryWithoutRestriction_showSummary() {
        when(mFeatureFactory.powerUsageFeatureProvider.isSmartBatterySupported()).thenReturn(true);
        when(mPowerUsageFeatureProvider.isSmartBatterySupported()).thenReturn(true);
        Settings.Global.putInt(mContext.getContentResolver(),
                Settings.Global.ADAPTIVE_BATTERY_MANAGEMENT_ENABLED, ON);

@@ -79,4 +82,20 @@ public class BatteryManagerPreferenceControllerTest {

        assertThat(mPreference.getSummary()).isEqualTo("Detecting when apps drain battery");
    }

    @Test
    public void getAvailabilityStatus_supportBatteryManager_showPrefPage() {
        when(mPowerUsageFeatureProvider.isBatteryManagerSupported()).thenReturn(true);

        assertThat(mController.getAvailabilityStatus()).isEqualTo(
                BatteryManagerPreferenceController.AVAILABLE_UNSEARCHABLE);
    }

    @Test
    public void getAvailabilityStatus_notSupportBatteryManager_notShowPrefPage() {
        when(mPowerUsageFeatureProvider.isBatteryManagerSupported()).thenReturn(false);

        assertThat(mController.getAvailabilityStatus()).isEqualTo(
                BatteryManagerPreferenceController.UNSUPPORTED_ON_DEVICE);
    }
}