diff --git a/src/com/android/settings/deviceinfo/batteryinfo/BatteryFirstUseDatePreferenceController.java b/src/com/android/settings/deviceinfo/batteryinfo/BatteryFirstUseDatePreferenceController.java index 8ad2ecab894..7d10b5b8a7f 100644 --- a/src/com/android/settings/deviceinfo/batteryinfo/BatteryFirstUseDatePreferenceController.java +++ b/src/com/android/settings/deviceinfo/batteryinfo/BatteryFirstUseDatePreferenceController.java @@ -17,32 +17,51 @@ package com.android.settings.deviceinfo.batteryinfo; import android.content.Context; +import android.os.BatteryManager; import com.android.settings.core.BasePreferenceController; import com.android.settings.fuelgauge.BatterySettingsFeatureProvider; +import com.android.settings.fuelgauge.BatteryUtils; import com.android.settings.overlay.FeatureFactory; +import java.util.concurrent.TimeUnit; + /** * A controller that manages the information about battery first use date. */ public class BatteryFirstUseDatePreferenceController extends BasePreferenceController { - private BatterySettingsFeatureProvider mBatterySettingsFeatureProvider; + private final BatterySettingsFeatureProvider mBatterySettingsFeatureProvider; + private final BatteryManager mBatteryManager; + + private long mFirstUseDateInMs; public BatteryFirstUseDatePreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); mBatterySettingsFeatureProvider = FeatureFactory.getFactory( - context).getBatterySettingsFeatureProvider(context); + context).getBatterySettingsFeatureProvider(); + mBatteryManager = mContext.getSystemService(BatteryManager.class); } @Override public int getAvailabilityStatus() { - return mBatterySettingsFeatureProvider.isFirstUseDateAvailable() + return mBatterySettingsFeatureProvider.isFirstUseDateAvailable(getFirstUseDate()) ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; } @Override public CharSequence getSummary() { - return mBatterySettingsFeatureProvider.getFirstUseDateSummary(); + return isAvailable() + ? BatteryUtils.getBatteryInfoFormattedDate(mFirstUseDateInMs) + : null; + } + + private long getFirstUseDate() { + if (mFirstUseDateInMs == 0L) { + final long firstUseDateInSec = mBatteryManager.getLongProperty( + BatteryManager.BATTERY_PROPERTY_FIRST_USAGE_DATE); + mFirstUseDateInMs = TimeUnit.MILLISECONDS.convert(firstUseDateInSec, TimeUnit.SECONDS); + } + return mFirstUseDateInMs; } } diff --git a/src/com/android/settings/deviceinfo/batteryinfo/BatteryManufactureDatePreferenceController.java b/src/com/android/settings/deviceinfo/batteryinfo/BatteryManufactureDatePreferenceController.java index 45b299ab5a7..d1b9df03a82 100644 --- a/src/com/android/settings/deviceinfo/batteryinfo/BatteryManufactureDatePreferenceController.java +++ b/src/com/android/settings/deviceinfo/batteryinfo/BatteryManufactureDatePreferenceController.java @@ -17,32 +17,52 @@ package com.android.settings.deviceinfo.batteryinfo; import android.content.Context; +import android.os.BatteryManager; import com.android.settings.core.BasePreferenceController; import com.android.settings.fuelgauge.BatterySettingsFeatureProvider; +import com.android.settings.fuelgauge.BatteryUtils; import com.android.settings.overlay.FeatureFactory; +import java.util.concurrent.TimeUnit; + /** * A controller that manages the information about battery manufacture date. */ public class BatteryManufactureDatePreferenceController extends BasePreferenceController { - private BatterySettingsFeatureProvider mBatterySettingsFeatureProvider; + private final BatterySettingsFeatureProvider mBatterySettingsFeatureProvider; + private final BatteryManager mBatteryManager; + + private long mManufactureDateInMs; public BatteryManufactureDatePreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); mBatterySettingsFeatureProvider = FeatureFactory.getFactory( - context).getBatterySettingsFeatureProvider(context); + context).getBatterySettingsFeatureProvider(); + mBatteryManager = mContext.getSystemService(BatteryManager.class); } @Override public int getAvailabilityStatus() { - return mBatterySettingsFeatureProvider.isManufactureDateAvailable() + return mBatterySettingsFeatureProvider.isManufactureDateAvailable(getManufactureDate()) ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; } @Override public CharSequence getSummary() { - return mBatterySettingsFeatureProvider.getManufactureDateSummary(); + return isAvailable() + ? BatteryUtils.getBatteryInfoFormattedDate(mManufactureDateInMs) + : null; + } + + private long getManufactureDate() { + if (mManufactureDateInMs == 0L) { + final long manufactureDateInSec = mBatteryManager.getLongProperty( + BatteryManager.BATTERY_PROPERTY_MANUFACTURING_DATE); + mManufactureDateInMs = TimeUnit.MILLISECONDS.convert(manufactureDateInSec, + TimeUnit.SECONDS); + } + return mManufactureDateInMs; } } diff --git a/src/com/android/settings/fuelgauge/BatterySettingsFeatureProvider.java b/src/com/android/settings/fuelgauge/BatterySettingsFeatureProvider.java index 18fef1a374f..dd13f1c4842 100644 --- a/src/com/android/settings/fuelgauge/BatterySettingsFeatureProvider.java +++ b/src/com/android/settings/fuelgauge/BatterySettingsFeatureProvider.java @@ -20,15 +20,8 @@ package com.android.settings.fuelgauge; public interface BatterySettingsFeatureProvider { /** Returns true if manufacture date should be shown */ - boolean isManufactureDateAvailable(); + boolean isManufactureDateAvailable(long manufactureDateMs); /** Returns true if first use date should be shown */ - boolean isFirstUseDateAvailable(); - - /** Returns the summary of battery manufacture date */ - CharSequence getManufactureDateSummary(); - - /** Returns the summary of battery first use date */ - CharSequence getFirstUseDateSummary(); - + boolean isFirstUseDateAvailable(long firstUseDateMs); } diff --git a/src/com/android/settings/fuelgauge/BatterySettingsFeatureProviderImpl.java b/src/com/android/settings/fuelgauge/BatterySettingsFeatureProviderImpl.java index ed4795ab785..2dcb1b12004 100644 --- a/src/com/android/settings/fuelgauge/BatterySettingsFeatureProviderImpl.java +++ b/src/com/android/settings/fuelgauge/BatterySettingsFeatureProviderImpl.java @@ -16,77 +16,16 @@ package com.android.settings.fuelgauge; -import android.content.Context; -import android.os.BatteryManager; - -import java.time.Instant; -import java.time.ZoneId; -import java.time.format.DateTimeFormatter; -import java.time.format.FormatStyle; -import java.util.concurrent.TimeUnit; - /** Feature provider implementation for battery settings usage. */ public class BatterySettingsFeatureProviderImpl implements BatterySettingsFeatureProvider { - protected Context mContext; - - private BatteryManager mBatteryManager; - private long mManufactureDateInMs; - private long mFirstUseDateInMs; - - public BatterySettingsFeatureProviderImpl(Context context) { - mContext = context.getApplicationContext(); - mBatteryManager = mContext.getSystemService(BatteryManager.class); - } - @Override - public boolean isManufactureDateAvailable() { + public boolean isManufactureDateAvailable(long manufactureDateMs) { return false; } @Override - public boolean isFirstUseDateAvailable() { + public boolean isFirstUseDateAvailable(long firstUseDateMs) { return false; } - - @Override - public CharSequence getManufactureDateSummary() { - return isManufactureDateAvailable() - ? getFormattedDate(getManufactureDate()) - : null; - } - - @Override - public CharSequence getFirstUseDateSummary() { - return isFirstUseDateAvailable() - ? getFormattedDate(getFirstUseDate()) - : null; - } - - protected long getManufactureDate() { - if (mManufactureDateInMs == 0L) { - final long manufactureDateInSec = mBatteryManager.getLongProperty( - BatteryManager.BATTERY_PROPERTY_MANUFACTURING_DATE); - mManufactureDateInMs = TimeUnit.MILLISECONDS.convert(manufactureDateInSec, - TimeUnit.SECONDS); - } - return mManufactureDateInMs; - } - - protected long getFirstUseDate() { - if (mFirstUseDateInMs == 0L) { - final long firstUseDateInSec = mBatteryManager.getLongProperty( - BatteryManager.BATTERY_PROPERTY_FIRST_USAGE_DATE); - mFirstUseDateInMs = TimeUnit.MILLISECONDS.convert(firstUseDateInSec, TimeUnit.SECONDS); - } - return mFirstUseDateInMs; - } - - private CharSequence getFormattedDate(long dateInMs) { - final Instant instant = Instant.ofEpochMilli(dateInMs); - final String localDate = instant.atZone(ZoneId.systemDefault()).toLocalDate().format( - DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG)); - - return localDate; - } } diff --git a/src/com/android/settings/fuelgauge/BatteryUtils.java b/src/com/android/settings/fuelgauge/BatteryUtils.java index f5d3950fc2f..29c7591863c 100644 --- a/src/com/android/settings/fuelgauge/BatteryUtils.java +++ b/src/com/android/settings/fuelgauge/BatteryUtils.java @@ -64,8 +64,10 @@ import com.google.protobuf.MessageLite; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; -import java.time.Duration; import java.time.Instant; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import java.time.format.FormatStyle; import java.util.List; /** @@ -671,6 +673,14 @@ public class BatteryUtils { } return summary.toString(); } + /** Format the date of battery related info */ + public static CharSequence getBatteryInfoFormattedDate(long dateInMs) { + final Instant instant = Instant.ofEpochMilli(dateInMs); + final String localDate = instant.atZone(ZoneId.systemDefault()).toLocalDate().format( + DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG)); + + return localDate; + } /** Builds the battery usage time information for one timestamp. */ private static String buildBatteryUsageTimeInfo(final Context context, long timeInMs, diff --git a/src/com/android/settings/overlay/FeatureFactory.java b/src/com/android/settings/overlay/FeatureFactory.java index 13e56edfb07..30f26cf3613 100644 --- a/src/com/android/settings/overlay/FeatureFactory.java +++ b/src/com/android/settings/overlay/FeatureFactory.java @@ -136,8 +136,7 @@ public abstract class FeatureFactory { /** * Gets implementation for Battery Settings provider. */ - public abstract BatterySettingsFeatureProvider getBatterySettingsFeatureProvider( - Context context); + public abstract BatterySettingsFeatureProvider getBatterySettingsFeatureProvider(); public abstract DashboardFeatureProvider getDashboardFeatureProvider(Context context); diff --git a/src/com/android/settings/overlay/FeatureFactoryImpl.java b/src/com/android/settings/overlay/FeatureFactoryImpl.java index d4f18782c05..ba163774e5f 100644 --- a/src/com/android/settings/overlay/FeatureFactoryImpl.java +++ b/src/com/android/settings/overlay/FeatureFactoryImpl.java @@ -150,9 +150,9 @@ public class FeatureFactoryImpl extends FeatureFactory { } @Override - public BatterySettingsFeatureProvider getBatterySettingsFeatureProvider(Context context) { + public BatterySettingsFeatureProvider getBatterySettingsFeatureProvider() { if (mBatterySettingsFeatureProvider == null) { - mBatterySettingsFeatureProvider = new BatterySettingsFeatureProviderImpl(context); + mBatterySettingsFeatureProvider = new BatterySettingsFeatureProviderImpl(); } return mBatterySettingsFeatureProvider; } diff --git a/tests/robotests/src/com/android/settings/deviceinfo/batteryinfo/BatteryFirstUseDatePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/batteryinfo/BatteryFirstUseDatePreferenceControllerTest.java index a7f6a2e4a2b..9ac69af4462 100644 --- a/tests/robotests/src/com/android/settings/deviceinfo/batteryinfo/BatteryFirstUseDatePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/deviceinfo/batteryinfo/BatteryFirstUseDatePreferenceControllerTest.java @@ -21,9 +21,12 @@ import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_U import static com.google.common.truth.Truth.assertThat; +import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.Mockito.when; +import static org.robolectric.Shadows.shadowOf; import android.content.Context; +import android.os.BatteryManager; import androidx.test.core.app.ApplicationProvider; @@ -33,16 +36,23 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; +import org.robolectric.annotation.Config; +import org.robolectric.shadows.ShadowBatteryManager; @RunWith(RobolectricTestRunner.class) +@Config(shadows = {ShadowBatteryManager.class}) public class BatteryFirstUseDatePreferenceControllerTest { private BatteryFirstUseDatePreferenceController mController; private Context mContext; + private BatteryManager mBatteryManager; + private ShadowBatteryManager mShadowBatteryManager; private FakeFeatureFactory mFactory; @Before public void setUp() { mContext = ApplicationProvider.getApplicationContext(); + mBatteryManager = mContext.getSystemService(BatteryManager.class); + mShadowBatteryManager = shadowOf(mBatteryManager); mFactory = FakeFeatureFactory.setupForTest(); mController = new BatteryFirstUseDatePreferenceController(mContext, "battery_info_first_use_date"); @@ -50,15 +60,37 @@ public class BatteryFirstUseDatePreferenceControllerTest { @Test public void getAvailabilityStatus_dateAvailable_returnAvailable() { - when(mFactory.batterySettingsFeatureProvider.isFirstUseDateAvailable()).thenReturn(true); + when(mFactory.batterySettingsFeatureProvider.isFirstUseDateAvailable(anyLong())) + .thenReturn(true); assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE); } @Test public void getAvailabilityStatus_dateUnavailable_returnNotAvailable() { - when(mFactory.batterySettingsFeatureProvider.isFirstUseDateAvailable()).thenReturn(false); + when(mFactory.batterySettingsFeatureProvider.isFirstUseDateAvailable(anyLong())) + .thenReturn(false); assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE); } + + @Test + public void getSummary_available_returnExpectedDate() { + when(mFactory.batterySettingsFeatureProvider.isFirstUseDateAvailable(anyLong())) + .thenReturn(true); + mShadowBatteryManager.setLongProperty(BatteryManager.BATTERY_PROPERTY_FIRST_USAGE_DATE, + 1669680000L); + + final CharSequence result = mController.getSummary(); + + assertThat(result.toString()).isEqualTo("November 29, 2022"); + } + + @Test + public void getSummary_unavailable_returnNull() { + when(mFactory.batterySettingsFeatureProvider.isFirstUseDateAvailable(anyLong())) + .thenReturn(false); + + assertThat(mController.getSummary()).isNull(); + } } diff --git a/tests/robotests/src/com/android/settings/deviceinfo/batteryinfo/BatteryManufactureDatePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/batteryinfo/BatteryManufactureDatePreferenceControllerTest.java index c4a5486b259..fed74f3a8f9 100644 --- a/tests/robotests/src/com/android/settings/deviceinfo/batteryinfo/BatteryManufactureDatePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/deviceinfo/batteryinfo/BatteryManufactureDatePreferenceControllerTest.java @@ -21,9 +21,12 @@ import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_U import static com.google.common.truth.Truth.assertThat; +import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.Mockito.when; +import static org.robolectric.Shadows.shadowOf; import android.content.Context; +import android.os.BatteryManager; import androidx.test.core.app.ApplicationProvider; @@ -33,17 +36,24 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; +import org.robolectric.annotation.Config; +import org.robolectric.shadows.ShadowBatteryManager; @RunWith(RobolectricTestRunner.class) +@Config(shadows = {ShadowBatteryManager.class}) public class BatteryManufactureDatePreferenceControllerTest { private BatteryManufactureDatePreferenceController mController; private Context mContext; + private BatteryManager mBatteryManager; + private ShadowBatteryManager mShadowBatteryManager; private FakeFeatureFactory mFactory; @Before public void setUp() { mContext = ApplicationProvider.getApplicationContext(); + mBatteryManager = mContext.getSystemService(BatteryManager.class); + mShadowBatteryManager = shadowOf(mBatteryManager); mFactory = FakeFeatureFactory.setupForTest(); mController = new BatteryManufactureDatePreferenceController(mContext, "battery_info_manufacture_date"); @@ -51,16 +61,37 @@ public class BatteryManufactureDatePreferenceControllerTest { @Test public void getAvailabilityStatus_dateAvailable_returnAvailable() { - when(mFactory.batterySettingsFeatureProvider.isManufactureDateAvailable()).thenReturn(true); + when(mFactory.batterySettingsFeatureProvider.isManufactureDateAvailable( + anyLong())).thenReturn(true); assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE); } @Test public void getAvailabilityStatus_dateUnavailable_returnNotAvailable() { - when(mFactory.batterySettingsFeatureProvider.isManufactureDateAvailable()) + when(mFactory.batterySettingsFeatureProvider.isManufactureDateAvailable(anyLong())) .thenReturn(false); assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE); } + + @Test + public void getSummary_available_returnExpectedDate() { + when(mFactory.batterySettingsFeatureProvider.isManufactureDateAvailable( + anyLong())).thenReturn(true); + mShadowBatteryManager.setLongProperty(BatteryManager.BATTERY_PROPERTY_MANUFACTURING_DATE, + 1669680000L); + + final CharSequence result = mController.getSummary(); + + assertThat(result.toString()).isEqualTo("November 29, 2022"); + } + + @Test + public void getSummary_unavailable_returnNull() { + when(mFactory.batterySettingsFeatureProvider.isManufactureDateAvailable(anyLong())) + .thenReturn(false); + + assertThat(mController.getSummary()).isNull(); + } } diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatterySettingsFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatterySettingsFeatureProviderImplTest.java index dfef3c7f0b8..6c0912561b2 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/BatterySettingsFeatureProviderImplTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/BatterySettingsFeatureProviderImplTest.java @@ -18,83 +18,29 @@ package com.android.settings.fuelgauge; import static com.google.common.truth.Truth.assertThat; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.spy; -import static org.robolectric.Shadows.shadowOf; - -import android.content.Context; -import android.os.BatteryManager; - -import androidx.test.core.app.ApplicationProvider; +import static org.mockito.ArgumentMatchers.anyLong; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; -import org.robolectric.annotation.Config; -import org.robolectric.shadows.ShadowBatteryManager; @RunWith(RobolectricTestRunner.class) -@Config(shadows = {ShadowBatteryManager.class}) public class BatterySettingsFeatureProviderImplTest { - private BatteryManager mBatteryManager; - private ShadowBatteryManager mShadowBatteryManager; - private Context mContext; private BatterySettingsFeatureProviderImpl mImpl; @Before public void setUp() { - MockitoAnnotations.initMocks(this); - mContext = spy(ApplicationProvider.getApplicationContext()); - mBatteryManager = mContext.getSystemService(BatteryManager.class); - mShadowBatteryManager = shadowOf(mBatteryManager); - mImpl = spy(new BatterySettingsFeatureProviderImpl(mContext)); + mImpl = new BatterySettingsFeatureProviderImpl(); } @Test public void isManufactureDateAvailable_returnFalse() { - assertThat(mImpl.isManufactureDateAvailable()).isFalse(); + assertThat(mImpl.isManufactureDateAvailable(anyLong())).isFalse(); } @Test public void isFirstUseDateAvailable_returnFalse() { - assertThat(mImpl.isFirstUseDateAvailable()).isFalse(); - } - - @Test - public void getManufactureDateSummary_available_returnExpectedDate() { - doReturn(true).when(mImpl).isManufactureDateAvailable(); - mShadowBatteryManager.setLongProperty(BatteryManager.BATTERY_PROPERTY_MANUFACTURING_DATE, - 1669680000L); - - final CharSequence result = mImpl.getManufactureDateSummary(); - - assertThat(result.toString()).isEqualTo("November 29, 2022"); - } - - @Test - public void getManufactureDateSummary_unavailable_returnNull() { - doReturn(false).when(mImpl).isManufactureDateAvailable(); - - assertThat(mImpl.getManufactureDateSummary()).isNull(); - } - - @Test - public void getFirstUseDateSummary_available_returnExpectedDate() { - doReturn(true).when(mImpl).isFirstUseDateAvailable(); - mShadowBatteryManager.setLongProperty(BatteryManager.BATTERY_PROPERTY_FIRST_USAGE_DATE, - 1669680000L); - - final CharSequence result = mImpl.getFirstUseDateSummary(); - - assertThat(result.toString()).isEqualTo("November 29, 2022"); - } - - @Test - public void getFirstUseDateSummary_unavailable_returnNull() { - doReturn(false).when(mImpl).isFirstUseDateAvailable(); - - assertThat(mImpl.getFirstUseDateSummary()).isNull(); + assertThat(mImpl.isFirstUseDateAvailable(anyLong())).isFalse(); } } diff --git a/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java b/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java index 47053802e39..a6c4cd28c11 100644 --- a/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java +++ b/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java @@ -171,7 +171,7 @@ public class FakeFeatureFactory extends FeatureFactory { } @Override - public BatterySettingsFeatureProvider getBatterySettingsFeatureProvider(Context context) { + public BatterySettingsFeatureProvider getBatterySettingsFeatureProvider() { return batterySettingsFeatureProvider; } diff --git a/tests/spa_unit/src/com/android/settings/testutils/FakeFeatureFactory.kt b/tests/spa_unit/src/com/android/settings/testutils/FakeFeatureFactory.kt index 50589ac67e0..bdaf805db06 100644 --- a/tests/spa_unit/src/com/android/settings/testutils/FakeFeatureFactory.kt +++ b/tests/spa_unit/src/com/android/settings/testutils/FakeFeatureFactory.kt @@ -84,9 +84,7 @@ class FakeFeatureFactory : FeatureFactory() { TODO("Not yet implemented") } - override fun getBatterySettingsFeatureProvider( - context: Context?, - ): BatterySettingsFeatureProvider { + override fun getBatterySettingsFeatureProvider(): BatterySettingsFeatureProvider { TODO("Not yet implemented") } diff --git a/tests/unit/src/com/android/settings/testutils/FakeFeatureFactory.java b/tests/unit/src/com/android/settings/testutils/FakeFeatureFactory.java index d7490100990..db2339f9e7a 100644 --- a/tests/unit/src/com/android/settings/testutils/FakeFeatureFactory.java +++ b/tests/unit/src/com/android/settings/testutils/FakeFeatureFactory.java @@ -157,7 +157,7 @@ public class FakeFeatureFactory extends FeatureFactory { } @Override - public BatterySettingsFeatureProvider getBatterySettingsFeatureProvider(Context context) { + public BatterySettingsFeatureProvider getBatterySettingsFeatureProvider() { return batterySettingsFeatureProvider; }