From fa16a386f2351e2bd44299caa50a0b6718d5cfa9 Mon Sep 17 00:00:00 2001 From: Luofan Chen Date: Thu, 31 Aug 2023 12:42:36 +0330 Subject: [PATCH] ChargingControl: Handle cancel toggle correctly if bypass is not supported Change-Id: Ib7e208bba554b76a067d70280785290d5a0ba08d Signed-off-by: Mohammad Hasan Keramat J --- .../lineage/health/ChargingControlController.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/services/core/java/com/android/server/lineage/health/ChargingControlController.java b/services/core/java/com/android/server/lineage/health/ChargingControlController.java index 51ebe37edbeb..9a3d99f33725 100644 --- a/services/core/java/com/android/server/lineage/health/ChargingControlController.java +++ b/services/core/java/com/android/server/lineage/health/ChargingControlController.java @@ -757,6 +757,21 @@ public boolean isDoneNotification() { private void handleNotificationIntent(Intent intent) { if (intent.getAction().equals(ACTION_CHARGING_CONTROL_CANCEL_ONCE)) { mIsControlCancelledOnce = true; + + if (!mIsChargingBypassSupported) { + IntentFilter disconnectFilter = new IntentFilter( + Intent.ACTION_POWER_DISCONNECTED); + // Register a one-time receiver that resets internal state on power + // disconnection + mContext.registerReceiver(new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + Log.i(TAG, "Power disconnected, reset internal states"); + resetInternalState(); + mContext.unregisterReceiver(this); + } + }, disconnectFilter); + } updateChargeControl(); cancelChargingControlNotification(); }