diff --git a/res/values/strings.xml b/res/values/strings.xml
index 776e3f41093..61b1e6a90e9 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -5604,18 +5604,6 @@
Charging optimized to protect your battery
To help extend your battery\'s lifespan, charging is optimized
-
- Charging optimized to protect your battery
-
- To help extend your battery\'s lifespan, charging is optimized while docked
-
- Charging optimized to protect your battery
-
- To help extend your battery\'s lifespan, charging is optimized while docked
-
- Charging to full
-
- To protect your battery, charging will be optimized the next time your tablet is docked
Learn more about charging is paused
diff --git a/src/com/android/settings/fuelgauge/BatterySettingsFeatureProvider.java b/src/com/android/settings/fuelgauge/BatterySettingsFeatureProvider.java
index 36ccdc61b50..cc333a53879 100644
--- a/src/com/android/settings/fuelgauge/BatterySettingsFeatureProvider.java
+++ b/src/com/android/settings/fuelgauge/BatterySettingsFeatureProvider.java
@@ -35,5 +35,5 @@ public interface BatterySettingsFeatureProvider {
boolean isBatteryInfoEnabled(Context context);
/** A way to add more battery tip detectors. */
- void addBatteryTipDetector(Context context, List tips);
+ void addBatteryTipDetector(Context context, List tips, BatteryInfo batteryInfo);
}
diff --git a/src/com/android/settings/fuelgauge/BatterySettingsFeatureProviderImpl.java b/src/com/android/settings/fuelgauge/BatterySettingsFeatureProviderImpl.java
index badab69314d..f974b9d7df6 100644
--- a/src/com/android/settings/fuelgauge/BatterySettingsFeatureProviderImpl.java
+++ b/src/com/android/settings/fuelgauge/BatterySettingsFeatureProviderImpl.java
@@ -41,5 +41,6 @@ public class BatterySettingsFeatureProviderImpl implements BatterySettingsFeatur
}
@Override
- public void addBatteryTipDetector(Context context, List tips) {}
+ public void addBatteryTipDetector(
+ Context context, List tips, BatteryInfo batteryInfo) {}
}
diff --git a/src/com/android/settings/fuelgauge/batterytip/BatteryTipLoader.java b/src/com/android/settings/fuelgauge/batterytip/BatteryTipLoader.java
index 9d63046960f..53521050c8e 100644
--- a/src/com/android/settings/fuelgauge/batterytip/BatteryTipLoader.java
+++ b/src/com/android/settings/fuelgauge/batterytip/BatteryTipLoader.java
@@ -25,7 +25,6 @@ import androidx.annotation.VisibleForTesting;
import com.android.settings.fuelgauge.BatteryInfo;
import com.android.settings.fuelgauge.BatteryUtils;
import com.android.settings.fuelgauge.batterytip.detectors.BatteryDefenderDetector;
-import com.android.settings.fuelgauge.batterytip.detectors.DockDefenderDetector;
import com.android.settings.fuelgauge.batterytip.detectors.HighUsageDetector;
import com.android.settings.fuelgauge.batterytip.detectors.IncompatibleChargerDetector;
import com.android.settings.fuelgauge.batterytip.detectors.LowBatteryDetector;
@@ -66,11 +65,10 @@ public class BatteryTipLoader extends AsyncLoaderCompat> {
tips.add(new LowBatteryDetector(context, policy, batteryInfo, isPowerSaveMode).detect());
tips.add(new HighUsageDetector(context, policy, mBatteryUsageStats, batteryInfo).detect());
tips.add(new BatteryDefenderDetector(batteryInfo, context).detect());
- tips.add(new DockDefenderDetector(batteryInfo, context).detect());
tips.add(new IncompatibleChargerDetector(context).detect());
FeatureFactory.getFeatureFactory()
.getBatterySettingsFeatureProvider()
- .addBatteryTipDetector(context, tips);
+ .addBatteryTipDetector(context, tips, batteryInfo);
Collections.sort(tips);
return tips;
}
diff --git a/src/com/android/settings/fuelgauge/batterytip/detectors/DockDefenderDetector.java b/src/com/android/settings/fuelgauge/batterytip/detectors/DockDefenderDetector.java
deleted file mode 100644
index 14aeecd69bb..00000000000
--- a/src/com/android/settings/fuelgauge/batterytip/detectors/DockDefenderDetector.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2022 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.batterytip.detectors;
-
-import android.content.Context;
-
-import com.android.settings.fuelgauge.BatteryInfo;
-import com.android.settings.fuelgauge.BatteryUtils;
-import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
-import com.android.settings.fuelgauge.batterytip.tips.DockDefenderTip;
-
-/** Detect whether the dock defender mode is enabled. */
-public class DockDefenderDetector implements BatteryTipDetector {
- private final BatteryInfo mBatteryInfo;
- private final Context mContext;
-
- public DockDefenderDetector(BatteryInfo batteryInfo, Context context) {
- mBatteryInfo = batteryInfo;
- mContext = context;
- }
-
- @Override
- public BatteryTip detect() {
- int mode = BatteryUtils.getCurrentDockDefenderMode(mContext, mBatteryInfo);
- return new DockDefenderTip(
- mode != BatteryUtils.DockDefenderMode.DISABLED
- ? BatteryTip.StateType.NEW
- : BatteryTip.StateType.INVISIBLE,
- mode);
- }
-}
diff --git a/src/com/android/settings/fuelgauge/batterytip/tips/DockDefenderTip.java b/src/com/android/settings/fuelgauge/batterytip/tips/DockDefenderTip.java
deleted file mode 100644
index 2458351738e..00000000000
--- a/src/com/android/settings/fuelgauge/batterytip/tips/DockDefenderTip.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Copyright (C) 2022 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.batterytip.tips;
-
-import android.app.settings.SettingsEnums;
-import android.content.Context;
-import android.content.Intent;
-import android.os.Parcel;
-import android.util.Log;
-
-import androidx.preference.Preference;
-
-import com.android.settings.R;
-import com.android.settings.fuelgauge.BatteryUtils;
-import com.android.settings.fuelgauge.BatteryUtils.DockDefenderMode;
-import com.android.settings.overlay.FeatureFactory;
-import com.android.settings.widget.CardPreference;
-import com.android.settingslib.HelpUtils;
-import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
-
-/** Tip to show dock defender status */
-public class DockDefenderTip extends BatteryTip {
- private static final String TAG = "DockDefenderTip";
- private int mMode;
-
- public DockDefenderTip(@StateType int state, @DockDefenderMode int mode) {
- super(TipType.DOCK_DEFENDER, state, false);
- mMode = mode;
- }
-
- private DockDefenderTip(Parcel in) {
- super(in);
- }
-
- public int getMode() {
- return mMode;
- }
-
- @Override
- public CharSequence getTitle(Context context) {
- switch (mMode) {
- case DockDefenderMode.FUTURE_BYPASS:
- return context.getString(R.string.battery_tip_dock_defender_future_bypass_title);
- case DockDefenderMode.ACTIVE:
- return context.getString(R.string.battery_tip_dock_defender_active_title);
- case DockDefenderMode.TEMPORARILY_BYPASSED:
- return context.getString(
- R.string.battery_tip_dock_defender_temporarily_bypassed_title);
- default:
- return null;
- }
- }
-
- @Override
- public CharSequence getSummary(Context context) {
- switch (mMode) {
- case DockDefenderMode.FUTURE_BYPASS:
- return context.getString(R.string.battery_tip_dock_defender_future_bypass_summary);
- case DockDefenderMode.ACTIVE:
- return context.getString(R.string.battery_tip_dock_defender_active_summary);
- case DockDefenderMode.TEMPORARILY_BYPASSED:
- return context.getString(
- R.string.battery_tip_dock_defender_temporarily_bypassed_summary);
- default:
- return null;
- }
- }
-
- @Override
- public int getIconId() {
- return mMode == DockDefenderMode.ACTIVE
- ? R.drawable.ic_battery_status_protected_24dp
- : R.drawable.ic_battery_dock_defender_untriggered_24dp;
- }
-
- @Override
- public void updateState(BatteryTip tip) {
- mState = tip.mState;
- if (tip instanceof DockDefenderTip) {
- mMode = ((DockDefenderTip) tip).mMode;
- }
- }
-
- @Override
- public void log(Context context, MetricsFeatureProvider metricsFeatureProvider) {
- metricsFeatureProvider.action(context, SettingsEnums.ACTION_DOCK_DEFENDER_TIP, mState);
- }
-
- @Override
- public void updatePreference(Preference preference) {
- super.updatePreference(preference);
- final Context context = preference.getContext();
-
- CardPreference cardPreference = castToCardPreferenceSafely(preference);
- if (cardPreference == null) {
- Log.e(TAG, "cast Preference to CardPreference failed");
- return;
- }
-
- cardPreference.setSelectable(false);
- switch (mMode) {
- case DockDefenderMode.FUTURE_BYPASS:
- case DockDefenderMode.ACTIVE:
- cardPreference.setPrimaryButtonText(
- context.getString(R.string.battery_tip_charge_to_full_button));
- cardPreference.setPrimaryButtonClickListener(
- unused -> {
- resumeCharging(context);
- mMode = DockDefenderMode.TEMPORARILY_BYPASSED;
- context.sendBroadcast(
- new Intent()
- .setAction(BatteryUtils.BYPASS_DOCK_DEFENDER_ACTION)
- .setPackage(context.getPackageName())
- .addFlags(
- Intent.FLAG_RECEIVER_REGISTERED_ONLY
- | Intent.FLAG_RECEIVER_FOREGROUND));
- updatePreference(preference);
- });
- cardPreference.setPrimaryButtonVisible(true);
- break;
- case DockDefenderMode.TEMPORARILY_BYPASSED:
- cardPreference.setPrimaryButtonVisible(false);
- break;
- default:
- cardPreference.setVisible(false);
- return;
- }
-
- cardPreference.setSecondaryButtonText(context.getString(R.string.learn_more));
- cardPreference.setSecondaryButtonClickListener(
- button ->
- button.startActivityForResult(
- HelpUtils.getHelpIntent(
- context,
- context.getString(R.string.help_url_dock_defender),
- /* backupContext */ ""), /* requestCode */
- 0));
- cardPreference.setSecondaryButtonVisible(true);
- cardPreference.setSecondaryButtonContentDescription(
- context.getString(
- R.string.battery_tip_limited_temporarily_sec_button_content_description));
- }
-
- private void resumeCharging(Context context) {
- final Intent intent =
- FeatureFactory.getFeatureFactory()
- .getPowerUsageFeatureProvider()
- .getResumeChargeIntent(true);
- if (intent != null) {
- context.sendBroadcast(intent);
- }
-
- Log.i(TAG, "send resume charging broadcast intent=" + intent);
- }
-
- public static final Creator CREATOR =
- new Creator() {
- public BatteryTip createFromParcel(Parcel in) {
- return new DockDefenderTip(in);
- }
-
- public BatteryTip[] newArray(int size) {
- return new DockDefenderTip[size];
- }
- };
-}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipLoaderTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipLoaderTest.java
index 5613c4ecbf0..bfe5d14650a 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipLoaderTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipLoaderTest.java
@@ -52,7 +52,6 @@ public class BatteryTipLoaderTest {
private static final int[] TIP_ORDER = {
BatteryTip.TipType.LOW_BATTERY,
BatteryTip.TipType.BATTERY_DEFENDER,
- BatteryTip.TipType.DOCK_DEFENDER,
BatteryTip.TipType.INCOMPATIBLE_CHARGER,
BatteryTip.TipType.HIGH_DEVICE_USAGE
};
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/DockDefenderDetectorTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/DockDefenderDetectorTest.java
deleted file mode 100644
index b90733dc47e..00000000000
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/DockDefenderDetectorTest.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Copyright (C) 2022 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.batterytip.detectors;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.ArgumentMatchers.refEq;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.spy;
-
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.os.BatteryManager;
-import android.provider.Settings;
-
-import androidx.test.core.app.ApplicationProvider;
-
-import com.android.settings.fuelgauge.BatteryInfo;
-import com.android.settings.fuelgauge.BatteryUtils;
-import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
-import com.android.settings.fuelgauge.batterytip.tips.DockDefenderTip;
-import com.android.settings.testutils.BatteryTestUtils;
-import com.android.settings.testutils.FakeFeatureFactory;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-
-@RunWith(RobolectricTestRunner.class)
-public class DockDefenderDetectorTest {
-
- private BatteryInfo mBatteryInfo;
- private DockDefenderDetector mDockDefenderDetector;
- private Context mContext;
- private FakeFeatureFactory mFakeFeatureFactory;
-
- @Before
- public void setUp() {
- MockitoAnnotations.initMocks(this);
- mContext = spy(ApplicationProvider.getApplicationContext());
- mBatteryInfo = new BatteryInfo();
- mBatteryInfo.pluggedStatus = BatteryManager.BATTERY_PLUGGED_DOCK;
- mDockDefenderDetector = new DockDefenderDetector(mBatteryInfo, mContext);
- Intent intent =
- BatteryTestUtils.getCustomBatteryIntent(
- BatteryManager.BATTERY_PLUGGED_DOCK,
- 50 /* level */,
- 100 /* scale */,
- BatteryManager.BATTERY_STATUS_CHARGING);
- doReturn(intent)
- .when(mContext)
- .registerReceiver(eq(null), refEq(new IntentFilter(Intent.ACTION_BATTERY_CHANGED)));
-
- Settings.Global.putInt(
- mContext.getContentResolver(),
- BatteryUtils.SETTINGS_GLOBAL_DOCK_DEFENDER_BYPASS,
- 0);
- mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
- }
-
- @Test
- public void testDetect_dockDefenderTemporarilyBypassed() {
- Settings.Global.putInt(
- mContext.getContentResolver(),
- BatteryUtils.SETTINGS_GLOBAL_DOCK_DEFENDER_BYPASS,
- 1);
-
- BatteryTip batteryTip = mDockDefenderDetector.detect();
-
- assertTrue(batteryTip instanceof DockDefenderTip);
- assertEquals(
- ((DockDefenderTip) batteryTip).getMode(),
- BatteryUtils.DockDefenderMode.TEMPORARILY_BYPASSED);
- }
-
- @Test
- public void testDetect_dockDefenderActive() {
- mBatteryInfo.isBatteryDefender = true;
- doReturn(true).when(mFakeFeatureFactory.powerUsageFeatureProvider).isExtraDefend();
-
- BatteryTip batteryTip = mDockDefenderDetector.detect();
-
- assertTrue(batteryTip instanceof DockDefenderTip);
- assertEquals(
- ((DockDefenderTip) batteryTip).getMode(), BatteryUtils.DockDefenderMode.ACTIVE);
- }
-
- @Test
- public void testDetect_dockDefenderFutureBypass() {
- mBatteryInfo.isBatteryDefender = false;
- doReturn(false).when(mFakeFeatureFactory.powerUsageFeatureProvider).isExtraDefend();
-
- BatteryTip batteryTip = mDockDefenderDetector.detect();
-
- assertTrue(batteryTip instanceof DockDefenderTip);
- assertEquals(
- ((DockDefenderTip) batteryTip).getMode(),
- BatteryUtils.DockDefenderMode.FUTURE_BYPASS);
- }
-
- @Test
- public void testDetect_overheatedTrue_dockDefenderDisabled() {
- mBatteryInfo.isBatteryDefender = true;
- doReturn(false).when(mFakeFeatureFactory.powerUsageFeatureProvider).isExtraDefend();
-
- BatteryTip batteryTip = mDockDefenderDetector.detect();
-
- assertTrue(batteryTip instanceof DockDefenderTip);
- assertEquals(
- ((DockDefenderTip) batteryTip).getMode(), BatteryUtils.DockDefenderMode.DISABLED);
- }
-
- @Test
- public void testDetect_pluggedInAC_dockDefenderDisabled() {
- mBatteryInfo.pluggedStatus = BatteryManager.BATTERY_PLUGGED_AC;
-
- BatteryTip batteryTip = mDockDefenderDetector.detect();
-
- assertTrue(batteryTip instanceof DockDefenderTip);
- assertEquals(
- ((DockDefenderTip) batteryTip).getMode(), BatteryUtils.DockDefenderMode.DISABLED);
- }
-
- @Test
- public void testDetect_overheatedTrueAndDockDefenderNotTriggered_dockDefenderDisabled() {
- doReturn(false).when(mFakeFeatureFactory.powerUsageFeatureProvider).isExtraDefend();
- mBatteryInfo.isBatteryDefender = true;
-
- BatteryTip batteryTip = mDockDefenderDetector.detect();
-
- assertTrue(batteryTip instanceof DockDefenderTip);
- assertEquals(
- ((DockDefenderTip) batteryTip).getMode(), BatteryUtils.DockDefenderMode.DISABLED);
- }
-}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/DockDefenderTipTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/DockDefenderTipTest.java
deleted file mode 100644
index 6d6c2e01acb..00000000000
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/DockDefenderTipTest.java
+++ /dev/null
@@ -1,209 +0,0 @@
-/*
- * Copyright (C) 2022 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.batterytip.tips;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-
-import android.app.settings.SettingsEnums;
-import android.content.Context;
-import android.util.Log;
-
-import androidx.preference.Preference;
-import androidx.test.core.app.ApplicationProvider;
-
-import com.android.settings.R;
-import com.android.settings.fuelgauge.BatteryUtils;
-import com.android.settings.testutils.FakeFeatureFactory;
-import com.android.settings.widget.CardPreference;
-import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
-
-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.shadows.ShadowLog;
-
-@RunWith(RobolectricTestRunner.class)
-public class DockDefenderTipTest {
- private Context mContext;
- private DockDefenderTip mDockDefenderTipFutureBypass;
- private DockDefenderTip mDockDefenderTipActive;
- private DockDefenderTip mDockDefenderTipTemporarilyBypassed;
- private DockDefenderTip mDockDefenderTipDisabled;
- private FakeFeatureFactory mFeatureFactory;
- private MetricsFeatureProvider mMetricsFeatureProvider;
-
- @Mock private Preference mPreference;
- @Mock private CardPreference mCardPreference;
-
- @Before
- public void setUp() {
- MockitoAnnotations.initMocks(this);
-
- mContext = ApplicationProvider.getApplicationContext();
- mFeatureFactory = FakeFeatureFactory.setupForTest();
- mMetricsFeatureProvider = mFeatureFactory.metricsFeatureProvider;
-
- mDockDefenderTipFutureBypass =
- new DockDefenderTip(
- BatteryTip.StateType.NEW, BatteryUtils.DockDefenderMode.FUTURE_BYPASS);
- mDockDefenderTipActive =
- new DockDefenderTip(BatteryTip.StateType.NEW, BatteryUtils.DockDefenderMode.ACTIVE);
- mDockDefenderTipTemporarilyBypassed =
- new DockDefenderTip(
- BatteryTip.StateType.NEW,
- BatteryUtils.DockDefenderMode.TEMPORARILY_BYPASSED);
- mDockDefenderTipDisabled =
- new DockDefenderTip(
- BatteryTip.StateType.INVISIBLE, BatteryUtils.DockDefenderMode.DISABLED);
-
- doReturn(mContext).when(mPreference).getContext();
- doReturn(mContext).when(mCardPreference).getContext();
- }
-
- @Test
- public void testGetTitle() {
- assertThat(mDockDefenderTipFutureBypass.getTitle(mContext).toString())
- .isEqualTo(
- mContext.getString(R.string.battery_tip_dock_defender_future_bypass_title));
- assertThat(mDockDefenderTipActive.getTitle(mContext).toString())
- .isEqualTo(mContext.getString(R.string.battery_tip_dock_defender_active_title));
- assertThat(mDockDefenderTipTemporarilyBypassed.getTitle(mContext).toString())
- .isEqualTo(
- mContext.getString(
- R.string.battery_tip_dock_defender_temporarily_bypassed_title));
- assertThat(mDockDefenderTipDisabled.getTitle(mContext)).isNull();
- }
-
- @Test
- public void testGetSummary() {
- assertThat(mDockDefenderTipFutureBypass.getSummary(mContext).toString())
- .isEqualTo(
- mContext.getString(
- R.string.battery_tip_dock_defender_future_bypass_summary));
- assertThat(mDockDefenderTipActive.getSummary(mContext).toString())
- .isEqualTo(mContext.getString(R.string.battery_tip_dock_defender_active_summary));
- assertThat(mDockDefenderTipTemporarilyBypassed.getSummary(mContext).toString())
- .isEqualTo(
- mContext.getString(
- R.string.battery_tip_dock_defender_temporarily_bypassed_summary));
- assertThat(mDockDefenderTipDisabled.getSummary(mContext)).isNull();
- }
-
- @Test
- public void testGetIconId_dockDefenderActive_getProtectedIcon() {
- assertThat(mDockDefenderTipActive.getIconId())
- .isEqualTo(R.drawable.ic_battery_status_protected_24dp);
- }
-
- @Test
- public void testGetIconId_dockDefenderNotActive_getUntriggeredIcon() {
- assertThat(mDockDefenderTipFutureBypass.getIconId())
- .isEqualTo(R.drawable.ic_battery_dock_defender_untriggered_24dp);
- assertThat(mDockDefenderTipTemporarilyBypassed.getIconId())
- .isEqualTo(R.drawable.ic_battery_dock_defender_untriggered_24dp);
- assertThat(mDockDefenderTipDisabled.getIconId())
- .isEqualTo(R.drawable.ic_battery_dock_defender_untriggered_24dp);
- }
-
- @Test
- public void testUpdateState() {
- mDockDefenderTipTemporarilyBypassed.updateState(mDockDefenderTipDisabled);
-
- assertThat(mDockDefenderTipTemporarilyBypassed.getState())
- .isEqualTo(BatteryTip.StateType.INVISIBLE);
- assertThat(mDockDefenderTipTemporarilyBypassed.getMode())
- .isEqualTo(BatteryUtils.DockDefenderMode.DISABLED);
- }
-
- @Test
- public void testLog() {
- mDockDefenderTipActive.log(mContext, mMetricsFeatureProvider);
-
- verify(mMetricsFeatureProvider)
- .action(
- mContext,
- SettingsEnums.ACTION_DOCK_DEFENDER_TIP,
- mDockDefenderTipActive.getState());
- }
-
- @Test
- public void testUpdatePreference_dockDefenderTipFutureBypass() {
- mDockDefenderTipFutureBypass.updatePreference(mCardPreference);
-
- verify(mCardPreference).setPrimaryButtonVisible(true);
- verify(mCardPreference)
- .setPrimaryButtonText(
- mContext.getString(R.string.battery_tip_charge_to_full_button));
- verifySecondaryButton();
- }
-
- @Test
- public void testUpdatePreference_dockDefenderTipActive() {
- mDockDefenderTipActive.updatePreference(mCardPreference);
-
- verify(mCardPreference).setPrimaryButtonVisible(true);
- verify(mCardPreference)
- .setPrimaryButtonText(
- mContext.getString(R.string.battery_tip_charge_to_full_button));
- verifySecondaryButton();
- }
-
- @Test
- public void testUpdatePreference_dockDefenderTipTemporarilyBypassed() {
- mDockDefenderTipTemporarilyBypassed.updatePreference(mCardPreference);
-
- verify(mCardPreference).setPrimaryButtonVisible(false);
- verify(mCardPreference, never()).setPrimaryButtonText(any());
- verifySecondaryButton();
- }
-
- private void verifySecondaryButton() {
- verify(mCardPreference).setSecondaryButtonText(mContext.getString(R.string.learn_more));
- verify(mCardPreference).setSecondaryButtonVisible(true);
- final String expectedContent =
- mContext.getString(
- R.string.battery_tip_limited_temporarily_sec_button_content_description);
- verify(mCardPreference).setSecondaryButtonContentDescription(expectedContent);
- }
-
- @Test
- public void updatePreference_castFail_logErrorMessage() {
- mDockDefenderTipActive.updatePreference(mPreference);
-
- assertThat(getLastErrorLog()).isEqualTo("cast Preference to CardPreference failed");
- }
-
- private String getLastErrorLog() {
- return ShadowLog.getLogsForTag(DockDefenderTip.class.getSimpleName()).stream()
- .filter(log -> log.type == Log.ERROR)
- .reduce((first, second) -> second)
- .orElse(createErrorLog("No Error Log"))
- .msg;
- }
-
- private ShadowLog.LogItem createErrorLog(String msg) {
- return new ShadowLog.LogItem(Log.ERROR, "tag", msg, null);
- }
-}