Fixed handling of usb state during adb changes. am: 0269ebe0fe

am: 4389cb6c9a

Change-Id: Ie93d9df3fad63ba937b3069695744d5cadd2796c
This commit is contained in:
Jerry Zhang
2016-11-17 00:22:53 +00:00
committed by android-build-merger

View File

@@ -337,14 +337,12 @@ public class UsbDeviceManager {
// Restore default functions. // Restore default functions.
mCurrentFunctions = SystemProperties.get(USB_CONFIG_PROPERTY, mCurrentFunctions = SystemProperties.get(USB_CONFIG_PROPERTY,
UsbManager.USB_FUNCTION_NONE); UsbManager.USB_FUNCTION_NONE);
if (UsbManager.USB_FUNCTION_NONE.equals(mCurrentFunctions)) {
mCurrentFunctions = UsbManager.USB_FUNCTION_MTP;
}
mCurrentFunctionsApplied = mCurrentFunctions.equals( mCurrentFunctionsApplied = mCurrentFunctions.equals(
SystemProperties.get(USB_STATE_PROPERTY)); SystemProperties.get(USB_STATE_PROPERTY));
mAdbEnabled = UsbManager.containsFunction(getDefaultFunctions(), mAdbEnabled = UsbManager.containsFunction(getDefaultFunctions(),
UsbManager.USB_FUNCTION_ADB); UsbManager.USB_FUNCTION_ADB);
setEnabledFunctions(null, false);
setEnabledFunctions(null, false, false);
String state = FileUtils.readTextFile(new File(STATE_PATH), 0, null).trim(); String state = FileUtils.readTextFile(new File(STATE_PATH), 0, null).trim();
updateState(state); updateState(state);
@@ -452,17 +450,24 @@ public class UsbDeviceManager {
if (DEBUG) Slog.d(TAG, "setAdbEnabled: " + enable); if (DEBUG) Slog.d(TAG, "setAdbEnabled: " + enable);
if (enable != mAdbEnabled) { if (enable != mAdbEnabled) {
mAdbEnabled = enable; mAdbEnabled = enable;
String oldFunctions = mCurrentFunctions;
// Due to the persist.sys.usb.config property trigger, changing adb state requires // Persist the adb setting
// persisting default function String newFunction = applyAdbFunction(SystemProperties.get(
String oldFunctions = getDefaultFunctions(); USB_PERSISTENT_CONFIG_PROPERTY, UsbManager.USB_FUNCTION_NONE));
String newFunctions = applyAdbFunction(oldFunctions); SystemProperties.set(USB_PERSISTENT_CONFIG_PROPERTY, newFunction);
if (!oldFunctions.equals(newFunctions)) {
SystemProperties.set(USB_PERSISTENT_CONFIG_PROPERTY, newFunctions); // Changing the persistent config also changes the normal
// config. Wait for this to happen before changing again.
waitForState(newFunction);
// Remove mtp from the config if file transfer is not enabled
if (oldFunctions.equals(UsbManager.USB_FUNCTION_MTP) &&
!mUsbDataUnlocked && enable) {
oldFunctions = UsbManager.USB_FUNCTION_NONE;
} }
// After persisting them use the lock-down aware function set setEnabledFunctions(oldFunctions, false, mUsbDataUnlocked);
setEnabledFunctions(mCurrentFunctions, false);
updateAdbNotification(); updateAdbNotification();
} }
@@ -474,7 +479,8 @@ public class UsbDeviceManager {
/** /**
* Evaluates USB function policies and applies the change accordingly. * Evaluates USB function policies and applies the change accordingly.
*/ */
private void setEnabledFunctions(String functions, boolean forceRestart) { private void setEnabledFunctions(String functions, boolean forceRestart,
boolean usbDataUnlocked) {
if (DEBUG) Slog.d(TAG, "setEnabledFunctions functions=" + functions + ", " if (DEBUG) Slog.d(TAG, "setEnabledFunctions functions=" + functions + ", "
+ "forceRestart=" + forceRestart); + "forceRestart=" + forceRestart);
@@ -514,7 +520,8 @@ public class UsbDeviceManager {
} }
private boolean trySetEnabledFunctions(String functions, boolean forceRestart) { private boolean trySetEnabledFunctions(String functions, boolean forceRestart) {
if (functions == null) { if (functions == null || applyAdbFunction(functions)
.equals(UsbManager.USB_FUNCTION_NONE)) {
functions = getDefaultFunctions(); functions = getDefaultFunctions();
} }
functions = applyAdbFunction(functions); functions = applyAdbFunction(functions);
@@ -596,10 +603,6 @@ public class UsbDeviceManager {
if (mBroadcastedIntent == null) { if (mBroadcastedIntent == null) {
for (String key : keySet) { for (String key : keySet) {
if (intent.getBooleanExtra(key, false)) { if (intent.getBooleanExtra(key, false)) {
// MTP function is enabled by default.
if (UsbManager.USB_FUNCTION_MTP.equals(key)) {
continue;
}
return true; return true;
} }
} }