summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEmily Bernier <ember@google.com>2014-07-11 18:48:11 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-07-10 21:35:02 +0000
commit34257d8544190979a0c1dfe63350fc50136e4dd0 (patch)
tree4512e8039a54961fdf55413f3844ab79239ad007
parent12b6bb44c103ee2a93a267f80dde714b3842c134 (diff)
parent1848d31c2cbb5404be383ad44049e58e36b258ba (diff)
downloadframeworks_base-34257d8544190979a0c1dfe63350fc50136e4dd0.zip
frameworks_base-34257d8544190979a0c1dfe63350fc50136e4dd0.tar.gz
frameworks_base-34257d8544190979a0c1dfe63350fc50136e4dd0.tar.bz2
Merge "Prevent users from mounting USB, if restricted."
-rw-r--r--services/usb/java/com/android/server/usb/UsbDeviceManager.java13
-rw-r--r--services/usb/java/com/android/server/usb/UsbService.java10
2 files changed, 22 insertions, 1 deletions
diff --git a/services/usb/java/com/android/server/usb/UsbDeviceManager.java b/services/usb/java/com/android/server/usb/UsbDeviceManager.java
index 6822ee3..5233297 100644
--- a/services/usb/java/com/android/server/usb/UsbDeviceManager.java
+++ b/services/usb/java/com/android/server/usb/UsbDeviceManager.java
@@ -39,6 +39,7 @@ import android.os.SystemClock;
import android.os.SystemProperties;
import android.os.UEventObserver;
import android.os.UserHandle;
+import android.os.UserManager;
import android.os.storage.StorageManager;
import android.os.storage.StorageVolume;
import android.provider.Settings;
@@ -655,6 +656,17 @@ public class UsbDeviceManager {
}
break;
case MSG_USER_SWITCHED: {
+ mCurrentUser = msg.arg1;
+
+ UserManager userManager =
+ (UserManager) mContext.getSystemService(Context.USER_SERVICE);
+ if (userManager.hasUserRestriction(UserManager.DISALLOW_USB_FILE_TRANSFER)) {
+ Slog.v(TAG, "Switched to user with DISALLOW_USB_FILE_TRANSFER restriction;"
+ + " disabling USB.");
+ setUsbConfig("none");
+ break;
+ }
+
final boolean mtpActive =
containsFunction(mCurrentFunctions, UsbManager.USB_FUNCTION_MTP)
|| containsFunction(mCurrentFunctions, UsbManager.USB_FUNCTION_PTP);
@@ -663,7 +675,6 @@ public class UsbDeviceManager {
setUsbConfig("none");
setUsbConfig(mCurrentFunctions);
}
- mCurrentUser = msg.arg1;
break;
}
}
diff --git a/services/usb/java/com/android/server/usb/UsbService.java b/services/usb/java/com/android/server/usb/UsbService.java
index b6ae192..fd83f92 100644
--- a/services/usb/java/com/android/server/usb/UsbService.java
+++ b/services/usb/java/com/android/server/usb/UsbService.java
@@ -28,6 +28,7 @@ import android.hardware.usb.UsbDevice;
import android.os.Bundle;
import android.os.ParcelFileDescriptor;
import android.os.UserHandle;
+import android.os.UserManager;
import android.util.SparseArray;
import com.android.internal.annotations.GuardedBy;
@@ -248,6 +249,15 @@ public class UsbService extends IUsbManager.Stub {
@Override
public void setCurrentFunction(String function, boolean makeDefault) {
mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_USB, null);
+
+ // If attempt to change USB function while file transfer is restricted, ensure that
+ // the current function is set to "none", and return.
+ UserManager userManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
+ if (userManager.hasUserRestriction(UserManager.DISALLOW_USB_FILE_TRANSFER)) {
+ if (mDeviceManager != null) mDeviceManager.setCurrentFunctions("none", false);
+ return;
+ }
+
if (mDeviceManager != null) {
mDeviceManager.setCurrentFunctions(function, makeDefault);
} else {