From fc3f24b4b60c10e0d3f41f70df37e11ea311cc2c Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Mon, 1 Oct 2012 21:45:52 -0700 Subject: Make USB services multi-user aware. USB settings are now isolated per-user, since they revolve around installed packages. User-specific settings are returned based on calling user, or referenced by UserHandle passed to SystemUI. Each settings Context is wrapped as a specific user, so all broadcasts are sent correctly. Upgrades any existing USB settings to OWNER. Physical events, like new devices, are routed to the currently active user. Switch to using AtomicFile when persisting settings. Bug: 7244888 Change-Id: I8a723ad3d55ac1bff99276c5f3a3f5e8f013432f --- core/java/android/app/ContextImpl.java | 1 + core/java/android/hardware/usb/IUsbManager.aidl | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) (limited to 'core/java') diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java index c41405b..59fa1e0 100644 --- a/core/java/android/app/ContextImpl.java +++ b/core/java/android/app/ContextImpl.java @@ -1703,6 +1703,7 @@ class ContextImpl extends Context { if (packageName.equals("system") || packageName.equals("android")) { final ContextImpl context = new ContextImpl(mMainThread.getSystemContext()); context.mBasePackageName = mBasePackageName; + context.mUser = user; return context; } diff --git a/core/java/android/hardware/usb/IUsbManager.aidl b/core/java/android/hardware/usb/IUsbManager.aidl index 98bd4f5..8286686 100644 --- a/core/java/android/hardware/usb/IUsbManager.aidl +++ b/core/java/android/hardware/usb/IUsbManager.aidl @@ -44,12 +44,12 @@ interface IUsbManager /* Sets the default package for a USB device * (or clears it if the package name is null) */ - void setDevicePackage(in UsbDevice device, String packageName); + void setDevicePackage(in UsbDevice device, String packageName, int userId); /* Sets the default package for a USB accessory * (or clears it if the package name is null) */ - void setAccessoryPackage(in UsbAccessory accessory, String packageName); + void setAccessoryPackage(in UsbAccessory accessory, String packageName, int userId); /* Returns true if the caller has permission to access the device. */ boolean hasDevicePermission(in UsbDevice device); @@ -77,10 +77,10 @@ interface IUsbManager void grantAccessoryPermission(in UsbAccessory accessory, int uid); /* Returns true if the USB manager has default preferences or permissions for the package */ - boolean hasDefaults(String packageName); + boolean hasDefaults(String packageName, int userId); /* Clears default preferences and permissions for the package */ - void clearDefaults(String packageName); + void clearDefaults(String packageName, int userId); /* Sets the current USB function. */ void setCurrentFunction(String function, boolean makeDefault); -- cgit v1.1