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

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

Merge "Check for preexisting flag before enabling the gadget"

parents 16d2c69c 222ed0fc
Loading
Loading
Loading
Loading
+31 −16
Original line number Diff line number Diff line
@@ -153,6 +153,7 @@ public class UsbDeviceManager implements ActivityTaskManagerInternal.ScreenObser
    private static final int MSG_SET_FUNCTIONS_TIMEOUT = 15;
    private static final int MSG_GET_CURRENT_USB_FUNCTIONS = 16;
    private static final int MSG_FUNCTION_SWITCH_TIMEOUT = 17;
    private static final int MSG_GADGET_HAL_REGISTERED = 18;

    private static final int AUDIO_MODE_SOURCE = 1;

@@ -1708,10 +1709,16 @@ public class UsbDeviceManager implements ActivityTaskManagerInternal.ScreenObser
        protected static final String CTL_STOP = "ctl.stop";

        /**
         * Adb natvie daemon
         * Adb native daemon.
         */
        protected static final String ADBD = "adbd";

        /**
         * Gadget HAL fully qualified instance name for registering for ServiceNotification.
         */
        protected static final String GADGET_HAL_FQ_NAME =
                "android.hardware.usb.gadget@1.0::IUsbGadget";

        protected boolean mCurrentUsbFunctionsRequested;

        UsbHandlerHal(Looper looper, Context context, UsbDeviceManager deviceManager,
@@ -1721,8 +1728,7 @@ public class UsbDeviceManager implements ActivityTaskManagerInternal.ScreenObser
                ServiceNotification serviceNotification = new ServiceNotification();

                boolean ret = IServiceManager.getService()
                        .registerForNotifications("android.hardware.usb.gadget@1.0::IUsbGadget",
                                "", serviceNotification);
                        .registerForNotifications(GADGET_HAL_FQ_NAME, "", serviceNotification);
                if (!ret) {
                    Slog.e(TAG, "Failed to register usb gadget service start notification");
                    return;
@@ -1764,20 +1770,12 @@ public class UsbDeviceManager implements ActivityTaskManagerInternal.ScreenObser
            @Override
            public void onRegistration(String fqName, String name, boolean preexisting) {
                Slog.i(TAG, "Usb gadget hal service started " + fqName + " " + name);
                synchronized (mGadgetProxyLock) {
                    try {
                        mGadgetProxy = IUsbGadget.getService();
                        mGadgetProxy.linkToDeath(new UsbGadgetDeathRecipient(),
                                USB_GADGET_HAL_DEATH_COOKIE);
                        if (!mCurrentFunctionsApplied && !mCurrentUsbFunctionsRequested) {
                            setEnabledFunctions(mCurrentFunctions, false);
                        }
                    } catch (NoSuchElementException e) {
                        Slog.e(TAG, "Usb gadget hal not found", e);
                    } catch (RemoteException e) {
                        Slog.e(TAG, "Usb Gadget hal not responding", e);
                    }
                if (!fqName.equals(GADGET_HAL_FQ_NAME)) {
                    Slog.e(TAG, "fqName does not match");
                    return;
                }

                sendMessage(MSG_GADGET_HAL_REGISTERED, preexisting);
            }
        }

@@ -1815,6 +1813,23 @@ public class UsbDeviceManager implements ActivityTaskManagerInternal.ScreenObser
                        setEnabledFunctions(UsbManager.FUNCTION_NONE, !isAdbEnabled());
                    }
                    break;
                case MSG_GADGET_HAL_REGISTERED:
                    boolean preexisting = msg.arg1 == 1;
                    synchronized (mGadgetProxyLock) {
                        try {
                            mGadgetProxy = IUsbGadget.getService();
                            mGadgetProxy.linkToDeath(new UsbGadgetDeathRecipient(),
                                    USB_GADGET_HAL_DEATH_COOKIE);
                            if (!mCurrentFunctionsApplied && !preexisting) {
                                setEnabledFunctions(mCurrentFunctions, false);
                            }
                        } catch (NoSuchElementException e) {
                            Slog.e(TAG, "Usb gadget hal not found", e);
                        } catch (RemoteException e) {
                            Slog.e(TAG, "Usb Gadget hal not responding", e);
                        }
                    }
                    break;
                default:
                    super.handleMessage(msg);
            }