ChargingControl: Handle cancel toggle correctly if bypass is not supported
Change-Id: Ib7e208bba554b76a067d70280785290d5a0ba08d
diff --git a/src/org/omnirom/omnilib/internal/health/ChargingControlController.java b/src/org/omnirom/omnilib/internal/health/ChargingControlController.java
index da65199..3738be8 100644
--- a/src/org/omnirom/omnilib/internal/health/ChargingControlController.java
+++ b/src/org/omnirom/omnilib/internal/health/ChargingControlController.java
@@ -758,6 +758,22 @@
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();
}