Fixed handling of usb state during adb changes. am: 0269ebe0fe
am: 4389cb6c9a
Change-Id: Ie93d9df3fad63ba937b3069695744d5cadd2796c
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user