From 29046f3f102e3af5498891077b2c70347adefb1d Mon Sep 17 00:00:00 2001 From: Dave Mankoff Date: Thu, 17 Dec 2020 15:40:35 -0500 Subject: [PATCH] Remove BatteryController reference from ReverseChargingController A circular depenency between these two classes could result in an NPE during intialization. Test: manual Fixes: 168778439 Change-Id: Ic67cfb3e3af3fb0d9380853e40bd7aca83301ea4 --- .../statusbar/policy/BatteryController.java | 3 +++ .../policy/BatteryControllerImpl.java | 18 +++++++++++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java index 08e70a97e0ca4..6ae5e904e4c7d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java @@ -105,6 +105,9 @@ public interface BatteryController extends DemoMode, Dumpable, default void onExtremeBatterySaverChanged(boolean isExtreme) { } + + default void onWirelessChargingChanged(boolean isWirlessCharging) { + } } /** diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java index 8c67072a15d94..da9aa97bab391 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java @@ -77,7 +77,7 @@ public class BatteryControllerImpl extends BroadcastReceiver implements BatteryC private boolean mCharged; protected boolean mPowerSave; private boolean mAodPowerSave; - protected boolean mWirelessCharging; + private boolean mWirelessCharging; private boolean mTestMode = false; @VisibleForTesting boolean mHasReceivedBattery = false; @@ -155,6 +155,7 @@ public class BatteryControllerImpl extends BroadcastReceiver implements BatteryC cb.onBatteryLevelChanged(mLevel, mPluggedIn, mCharging); cb.onPowerSaveChanged(mPowerSave); cb.onBatteryUnknownStateChanged(mStateUnknown); + cb.onWirelessChargingChanged(mWirelessCharging); } @Override @@ -179,8 +180,12 @@ public class BatteryControllerImpl extends BroadcastReceiver implements BatteryC BatteryManager.BATTERY_STATUS_UNKNOWN); mCharged = status == BatteryManager.BATTERY_STATUS_FULL; mCharging = mCharged || status == BatteryManager.BATTERY_STATUS_CHARGING; - mWirelessCharging = mCharging && intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0) - == BatteryManager.BATTERY_PLUGGED_WIRELESS; + if (mWirelessCharging != (mCharging + && intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0) + == BatteryManager.BATTERY_PLUGGED_WIRELESS)) { + mWirelessCharging = !mWirelessCharging; + fireWirelessChargingChanged(); + } boolean present = intent.getBooleanExtra(EXTRA_PRESENT, true); boolean unknown = !present; @@ -227,6 +232,13 @@ public class BatteryControllerImpl extends BroadcastReceiver implements BatteryC } } + private void fireWirelessChargingChanged() { + synchronized (mChangeCallbacks) { + mChangeCallbacks.forEach(batteryStateChangeCallback -> + batteryStateChangeCallback.onWirelessChargingChanged(mWirelessCharging)); + } + } + @Override public boolean isPluggedIn() { return mPluggedIn;