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

Commit f6ba37e5 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: 3b60e2a9

parents 164ddcf0 3b60e2a9
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