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

Commit 8b0807c7 authored by Badhri Jagan Sridharan's avatar Badhri Jagan Sridharan
Browse files

Fix handling usb dialog for wall chargers. [DO NOT MERGE]

UsbPort.POWER_ROLE_SINK is orthogonal to the type of the charger
attached. POWER_ROLE_SINK would be the case for AC charging and
USB charging. Therefore query BatteryManager for the charger
type.

Bug: 34972898
Test: Charging notification should not show for pixel-c chargers.
Change-Id: I8dddcd7727b6af973bd173d2c6e325aa4be2ca3a
parent 5de3e5ab
Loading
Loading
Loading
Loading
+22 −2
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ import android.hardware.usb.UsbAccessory;
import android.hardware.usb.UsbManager;
import android.hardware.usb.UsbPort;
import android.hardware.usb.UsbPortStatus;
import android.os.BatteryManager;
import android.os.FileUtils;
import android.os.Handler;
import android.os.Looper;
@@ -111,6 +112,7 @@ public class UsbDeviceManager {
    private static final int MSG_USER_SWITCHED = 5;
    private static final int MSG_UPDATE_USER_RESTRICTIONS = 6;
    private static final int MSG_UPDATE_HOST_STATE = 7;
    private static final int MSG_UPDATE_CHARGING_STATE = 9;

    private static final int AUDIO_MODE_SOURCE = 1;

@@ -191,6 +193,15 @@ public class UsbDeviceManager {
        }
    };

    private final BroadcastReceiver mChargingReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
             int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
             boolean usbCharging = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
             mHandler.sendMessage(MSG_UPDATE_CHARGING_STATE, usbCharging);
        }
    };

    public UsbDeviceManager(Context context, UsbAlsaManager alsaManager) {
        mContext = context;
        mUsbAlsaManager = alsaManager;
@@ -215,6 +226,8 @@ public class UsbDeviceManager {
        }
        mContext.registerReceiver(mHostReceiver,
                new IntentFilter(UsbManager.ACTION_USB_PORT_CHANGED));
        mContext.registerReceiver(mChargingReceiver,
                new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
    }

    private UsbSettingsManager getCurrentSettings() {
@@ -329,6 +342,7 @@ public class UsbDeviceManager {
        private int mUsbNotificationId;
        private boolean mAdbNotificationShown;
        private int mCurrentUser = UserHandle.USER_NULL;
        private boolean mUsbCharging;

        public UsbHandler(Looper looper) {
            super(looper);
@@ -722,6 +736,7 @@ public class UsbDeviceManager {

        @Override
        public void handleMessage(Message msg) {
            SomeArgs args;
            switch (msg.what) {
                case MSG_UPDATE_STATE:
                    mConnected = (msg.arg1 == 1);
@@ -742,7 +757,7 @@ public class UsbDeviceManager {
                    }
                    break;
                case MSG_UPDATE_HOST_STATE:
                    SomeArgs args = (SomeArgs) msg.obj;
                    args = (SomeArgs) msg.obj;
                    mHostConnected = (args.argi1 == 1);
                    mSourcePower = (args.argi2 == 1);
                    mSinkPower = (args.argi3 == 1);
@@ -752,6 +767,10 @@ public class UsbDeviceManager {
                        updateUsbStateBroadcastIfNeeded();
                    }
                    break;
                case MSG_UPDATE_CHARGING_STATE:
                    mUsbCharging = (msg.arg1 == 1);
                    updateUsbNotification();
                    break;
                case MSG_ENABLE_ADB:
                    setAdbEnabled(msg.arg1 == 1);
                    break;
@@ -832,7 +851,7 @@ public class UsbDeviceManager {
                }
            } else if (mSourcePower) {
                id = com.android.internal.R.string.usb_supplying_notification_title;
            } else if (mHostConnected && mSinkPower) {
            } else if (mHostConnected && mSinkPower && mUsbCharging) {
                id = com.android.internal.R.string.usb_charging_notification_title;
            }
            if (id != mUsbNotificationId) {
@@ -936,6 +955,7 @@ public class UsbDeviceManager {
            pw.println("  mHostConnected: " + mHostConnected);
            pw.println("  mSourcePower: " + mSourcePower);
            pw.println("  mSinkPower: " + mSinkPower);
            pw.println("  mUsbCharging: " + mUsbCharging);
            try {
                pw.println("  Kernel state: "
                        + FileUtils.readTextFile(new File(STATE_PATH), 0, null).trim());