From b875752307a5ea8bbecce88b2902766d93bfdd6e Mon Sep 17 00:00:00 2001 From: ykhung Date: Tue, 27 Dec 2022 14:34:12 +0800 Subject: [PATCH] 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 --- .../fuelgauge/PowerUsageFeatureProvider.java | 20 +++++------------- .../PowerUsageFeatureProviderImpl.java | 20 +++++------------- .../BatteryManagerPreferenceController.java | 9 ++++---- .../PowerUsageFeatureProviderImplTest.java | 10 --------- ...atteryManagerPreferenceControllerTest.java | 21 ++++++++++++++++++- 5 files changed, 34 insertions(+), 46 deletions(-) diff --git a/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java b/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java index 308409e276c..997ad963287 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java +++ b/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java @@ -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 */ diff --git a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java index 5b33dc11a45..741eb3baf45 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java +++ b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java @@ -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; diff --git a/src/com/android/settings/fuelgauge/batterytip/BatteryManagerPreferenceController.java b/src/com/android/settings/fuelgauge/batterytip/BatteryManagerPreferenceController.java index d508603c772..a156395f44a 100644 --- a/src/com/android/settings/fuelgauge/batterytip/BatteryManagerPreferenceController.java +++ b/src/com/android/settings/fuelgauge/batterytip/BatteryManagerPreferenceController.java @@ -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); } } diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java index ab61abce44c..4fbd695c767 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java @@ -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( diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryManagerPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryManagerPreferenceControllerTest.java index b01e3b1f66c..36f891edb1a 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryManagerPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryManagerPreferenceControllerTest.java @@ -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); + } }