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

Commit e769c5b4 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Fix battery percentage is inconsistent in settings" into udc-dev am:...

Merge "Fix battery percentage is inconsistent in settings" into udc-dev am: 3b60e2a9 am: 01d7ed6a

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/22948142



Change-Id: I1212ac1e7b15b6280b1ae5386a916d1295d438bd
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 750cd809 01d7ed6a
Loading
Loading
Loading
Loading
+21 −15
Original line number Diff line number Diff line
@@ -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;
@@ -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 */);
        });

@@ -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(() -> {
@@ -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;
@@ -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) {
+1 −1
Original line number Diff line number Diff line
@@ -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