diff options
author | Emily Bernier <ember@google.com> | 2014-07-11 18:48:11 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2014-07-10 21:35:02 +0000 |
commit | 34257d8544190979a0c1dfe63350fc50136e4dd0 (patch) | |
tree | 4512e8039a54961fdf55413f3844ab79239ad007 | |
parent | 12b6bb44c103ee2a93a267f80dde714b3842c134 (diff) | |
parent | 1848d31c2cbb5404be383ad44049e58e36b258ba (diff) | |
download | frameworks_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.java | 13 | ||||
-rw-r--r-- | services/usb/java/com/android/server/usb/UsbService.java | 10 |
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 { |