Merge "Allow system server to bind to USB devices." into jb-mr2-dev

This commit is contained in:
Jeff Brown
2013-03-28 18:53:59 +00:00
committed by Android (Google) Code Review

View File

@ -34,6 +34,7 @@ import android.hardware.usb.UsbInterface;
import android.hardware.usb.UsbManager; import android.hardware.usb.UsbManager;
import android.os.Binder; import android.os.Binder;
import android.os.Environment; import android.os.Environment;
import android.os.Process;
import android.os.UserHandle; import android.os.UserHandle;
import android.util.AtomicFile; import android.util.AtomicFile;
import android.util.Log; import android.util.Log;
@ -853,21 +854,29 @@ class UsbSettingsManager {
public boolean hasPermission(UsbDevice device) { public boolean hasPermission(UsbDevice device) {
synchronized (mLock) { synchronized (mLock) {
int uid = Binder.getCallingUid();
if (uid == Process.SYSTEM_UID) {
return true;
}
SparseBooleanArray uidList = mDevicePermissionMap.get(device.getDeviceName()); SparseBooleanArray uidList = mDevicePermissionMap.get(device.getDeviceName());
if (uidList == null) { if (uidList == null) {
return false; return false;
} }
return uidList.get(Binder.getCallingUid()); return uidList.get(uid);
} }
} }
public boolean hasPermission(UsbAccessory accessory) { public boolean hasPermission(UsbAccessory accessory) {
synchronized (mLock) { synchronized (mLock) {
int uid = Binder.getCallingUid();
if (uid == Process.SYSTEM_UID) {
return true;
}
SparseBooleanArray uidList = mAccessoryPermissionMap.get(accessory); SparseBooleanArray uidList = mAccessoryPermissionMap.get(accessory);
if (uidList == null) { if (uidList == null) {
return false; return false;
} }
return uidList.get(Binder.getCallingUid()); return uidList.get(uid);
} }
} }