Loading src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceController.java +21 −15 Original line number Diff line number Diff line Loading @@ -38,11 +38,13 @@ public class TopLevelBatteryPreferenceController extends BasePreferenceControlle private static final String TAG = "TopLvBatteryPrefControl"; @VisibleForTesting protected boolean mIsBatteryPresent = true; @VisibleForTesting Preference mPreference; @VisibleForTesting protected boolean mIsBatteryPresent = true; private final BatteryBroadcastReceiver mBatteryBroadcastReceiver; private BatteryInfo mBatteryInfo; private BatteryStatusFeatureProvider mBatteryStatusFeatureProvider; private String mBatteryStatusLabel; Loading @@ -56,8 +58,11 @@ public class TopLevelBatteryPreferenceController extends BasePreferenceControlle mIsBatteryPresent = false; } BatteryInfo.getBatteryInfo(mContext, info -> { Log.d(TAG, "getBatteryInfo: " + info); mBatteryInfo = info; updateState(mPreference); // Update the preference summary text to the latest state. setSummaryAsync(info); }, true /* shortString */); }); Loading Loading @@ -105,18 +110,19 @@ public class TopLevelBatteryPreferenceController extends BasePreferenceControlle if (info == null || context == null) { return null; } Log.d(TAG, "getDashboardLabel: batteryStatusUpdate=" + batteryStatusUpdate); Log.d(TAG, "getDashboardLabel: " + mBatteryStatusLabel + " batteryStatusUpdate=" + batteryStatusUpdate); if (batteryStatusUpdate) { setSummaryAsync(info); } return (mBatteryStatusLabel == null) ? generateLabel(info) : mBatteryStatusLabel; return mBatteryStatusLabel == null ? generateLabel(info) : mBatteryStatusLabel; } private void setSummaryAsync(BatteryInfo info) { ThreadUtils.postOnBackgroundThread(() -> { // Return false if built-in status should be used, will use updateBatteryStatus() // method to inject the customized battery status label. final boolean triggerBatteryStatusUpdate = mBatteryStatusFeatureProvider.triggerBatteryStatusUpdate(this, info); ThreadUtils.postOnMainThread(() -> { Loading @@ -124,14 +130,14 @@ public class TopLevelBatteryPreferenceController extends BasePreferenceControlle mBatteryStatusLabel = null; // will generateLabel() } mPreference.setSummary( (mBatteryStatusLabel == null) ? generateLabel(info) : mBatteryStatusLabel); mBatteryStatusLabel == null ? generateLabel(info) : mBatteryStatusLabel); }); }); } private CharSequence generateLabel(BatteryInfo info) { if (Utils.containsIncompatibleChargers(mContext, TAG)) { return mContext.getString(R.string.battery_tip_incompatible_charging_title); return mContext.getString(R.string.battery_info_status_not_charging); } if (!info.discharging && info.chargeLabel != null) { return info.chargeLabel; Loading @@ -150,15 +156,15 @@ public class TopLevelBatteryPreferenceController extends BasePreferenceControlle @Override public void updateBatteryStatus(String label, BatteryInfo info) { mBatteryStatusLabel = label; // Null if adaptive charging is not active if (mPreference != null) { // Do not triggerBatteryStatusUpdate(), otherwise there will be an infinite loop if (mPreference == null) { return; } // Do not triggerBatteryStatusUpdate() here to cause infinite loop final CharSequence summary = getSummary(false /* batteryStatusUpdate */); if (summary != null) { mPreference.setSummary(summary); } } } @VisibleForTesting protected static ComponentName convertClassPathToComponentName(String classPath) { Loading tests/robotests/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceControllerTest.java +1 −1 Original line number Diff line number Diff line Loading @@ -141,7 +141,7 @@ public class TopLevelBatteryPreferenceControllerTest { BatteryInfo info = new BatteryInfo(); assertThat(mController.getDashboardLabel(mContext, info, true)) .isEqualTo(mContext.getString(R.string.battery_tip_incompatible_charging_title)); .isEqualTo(mContext.getString(R.string.battery_info_status_not_charging)); } @Test Loading Loading
src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceController.java +21 −15 Original line number Diff line number Diff line Loading @@ -38,11 +38,13 @@ public class TopLevelBatteryPreferenceController extends BasePreferenceControlle private static final String TAG = "TopLvBatteryPrefControl"; @VisibleForTesting protected boolean mIsBatteryPresent = true; @VisibleForTesting Preference mPreference; @VisibleForTesting protected boolean mIsBatteryPresent = true; private final BatteryBroadcastReceiver mBatteryBroadcastReceiver; private BatteryInfo mBatteryInfo; private BatteryStatusFeatureProvider mBatteryStatusFeatureProvider; private String mBatteryStatusLabel; Loading @@ -56,8 +58,11 @@ public class TopLevelBatteryPreferenceController extends BasePreferenceControlle mIsBatteryPresent = false; } BatteryInfo.getBatteryInfo(mContext, info -> { Log.d(TAG, "getBatteryInfo: " + info); mBatteryInfo = info; updateState(mPreference); // Update the preference summary text to the latest state. setSummaryAsync(info); }, true /* shortString */); }); Loading Loading @@ -105,18 +110,19 @@ public class TopLevelBatteryPreferenceController extends BasePreferenceControlle if (info == null || context == null) { return null; } Log.d(TAG, "getDashboardLabel: batteryStatusUpdate=" + batteryStatusUpdate); Log.d(TAG, "getDashboardLabel: " + mBatteryStatusLabel + " batteryStatusUpdate=" + batteryStatusUpdate); if (batteryStatusUpdate) { setSummaryAsync(info); } return (mBatteryStatusLabel == null) ? generateLabel(info) : mBatteryStatusLabel; return mBatteryStatusLabel == null ? generateLabel(info) : mBatteryStatusLabel; } private void setSummaryAsync(BatteryInfo info) { ThreadUtils.postOnBackgroundThread(() -> { // Return false if built-in status should be used, will use updateBatteryStatus() // method to inject the customized battery status label. final boolean triggerBatteryStatusUpdate = mBatteryStatusFeatureProvider.triggerBatteryStatusUpdate(this, info); ThreadUtils.postOnMainThread(() -> { Loading @@ -124,14 +130,14 @@ public class TopLevelBatteryPreferenceController extends BasePreferenceControlle mBatteryStatusLabel = null; // will generateLabel() } mPreference.setSummary( (mBatteryStatusLabel == null) ? generateLabel(info) : mBatteryStatusLabel); mBatteryStatusLabel == null ? generateLabel(info) : mBatteryStatusLabel); }); }); } private CharSequence generateLabel(BatteryInfo info) { if (Utils.containsIncompatibleChargers(mContext, TAG)) { return mContext.getString(R.string.battery_tip_incompatible_charging_title); return mContext.getString(R.string.battery_info_status_not_charging); } if (!info.discharging && info.chargeLabel != null) { return info.chargeLabel; Loading @@ -150,15 +156,15 @@ public class TopLevelBatteryPreferenceController extends BasePreferenceControlle @Override public void updateBatteryStatus(String label, BatteryInfo info) { mBatteryStatusLabel = label; // Null if adaptive charging is not active if (mPreference != null) { // Do not triggerBatteryStatusUpdate(), otherwise there will be an infinite loop if (mPreference == null) { return; } // Do not triggerBatteryStatusUpdate() here to cause infinite loop final CharSequence summary = getSummary(false /* batteryStatusUpdate */); if (summary != null) { mPreference.setSummary(summary); } } } @VisibleForTesting protected static ComponentName convertClassPathToComponentName(String classPath) { Loading
tests/robotests/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceControllerTest.java +1 −1 Original line number Diff line number Diff line Loading @@ -141,7 +141,7 @@ public class TopLevelBatteryPreferenceControllerTest { BatteryInfo info = new BatteryInfo(); assertThat(mController.getDashboardLabel(mContext, info, true)) .isEqualTo(mContext.getString(R.string.battery_tip_incompatible_charging_title)); .isEqualTo(mContext.getString(R.string.battery_info_status_not_charging)); } @Test Loading