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

Commit dee514fa authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge changes from topic 'pixel-c' into nyc-mr2-dev

* changes:
  Introduce debounce to filter rapidly toggling type-c ports [DO NOT MERGE]
  Fix handling usb dialog for wall chargers. [DO NOT MERGE]
parents ee37330d e8b0e113
Loading
Loading
Loading
Loading
+26 −3
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);
@@ -429,7 +443,10 @@ public class UsbDeviceManager {
            args.argi2 = sourcePower ? 1 :0;
            args.argi3 = sinkPower ? 1 :0;

            obtainMessage(MSG_UPDATE_HOST_STATE, args).sendToTarget();
            removeMessages(MSG_UPDATE_HOST_STATE);
            Message msg = obtainMessage(MSG_UPDATE_HOST_STATE, args);
            // debounce rapid transitions of connect/disconnect on type-c ports
            sendMessageDelayed(msg, UPDATE_DELAY);
        }

        private boolean waitForState(String state) {
@@ -722,6 +739,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 +760,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 +770,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 +854,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 +958,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());