Merge "Allow UsbDeviceManager to start adbd again."

This commit is contained in:
Joshua Duong
2020-02-26 15:51:09 +00:00
committed by Android (Google) Code Review
3 changed files with 48 additions and 1 deletions

View File

@@ -53,4 +53,14 @@ public abstract class AdbManagerInternal {
* Returns the file that contains all of the ADB keys and their last used time.
*/
public abstract File getAdbTempKeysFile();
/**
* Starts adbd for a transport.
*/
public abstract void startAdbdForTransport(byte transportType);
/**
* Stops adbd for a transport.
*/
public abstract void stopAdbdForTransport(byte transportType);
}

View File

@@ -144,6 +144,18 @@ public class AdbService extends IAdbManager.Stub {
public File getAdbTempKeysFile() {
return mDebuggingManager.getAdbTempKeysFile();
}
@Override
public void startAdbdForTransport(byte transportType) {
FgThread.getHandler().sendMessage(obtainMessage(
AdbService::setAdbdEnabledForTransport, AdbService.this, true, transportType));
}
@Override
public void stopAdbdForTransport(byte transportType) {
FgThread.getHandler().sendMessage(obtainMessage(
AdbService::setAdbdEnabledForTransport, AdbService.this, false, transportType));
}
}
private void initAdbState() {
@@ -437,6 +449,19 @@ public class AdbService extends IAdbManager.Stub {
}
}
private void setAdbdEnabledForTransport(boolean enable, byte transportType) {
if (transportType == AdbTransportType.USB) {
mIsAdbUsbEnabled = enable;
} else if (transportType == AdbTransportType.WIFI) {
mIsAdbWifiEnabled = enable;
}
if (enable) {
startAdbd();
} else {
stopAdbd();
}
}
private void setAdbEnabled(boolean enable, byte transportType) {
if (DEBUG) {
Slog.d(TAG, "setAdbEnabled(" + enable + "), mIsAdbUsbEnabled=" + mIsAdbUsbEnabled

View File

@@ -1917,7 +1917,19 @@ public class UsbDeviceManager implements ActivityTaskManagerInternal.ScreenObser
return;
}
try {
// Adbd will be started by AdbService once Global.ADB_ENABLED is set.
if ((config & UsbManager.FUNCTION_ADB) != 0) {
/**
* Start adbd if ADB function is included in the configuration.
*/
LocalServices.getService(AdbManagerInternal.class)
.startAdbdForTransport(AdbTransportType.USB);
} else {
/**
* Stop adbd otherwise
*/
LocalServices.getService(AdbManagerInternal.class)
.stopAdbdForTransport(AdbTransportType.USB);
}
UsbGadgetCallback usbGadgetCallback = new UsbGadgetCallback(mCurrentRequest,
config, chargingFunctions);
mGadgetProxy.setCurrentUsbFunctions(config, usbGadgetCallback,