Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fbbcffeb authored by Jeff Sharkey's avatar Jeff Sharkey Committed by Android Git Automerger
Browse files

am 1ed299f8: Merge "Make USB services multi-user aware." into jb-mr1-dev

* commit '1ed299f8':
  Make USB services multi-user aware.
parents 18be68f7 1ed299f8
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -1703,6 +1703,7 @@ class ContextImpl extends Context {
        if (packageName.equals("system") || packageName.equals("android")) {
        if (packageName.equals("system") || packageName.equals("android")) {
            final ContextImpl context = new ContextImpl(mMainThread.getSystemContext());
            final ContextImpl context = new ContextImpl(mMainThread.getSystemContext());
            context.mBasePackageName = mBasePackageName;
            context.mBasePackageName = mBasePackageName;
            context.mUser = user;
            return context;
            return context;
        }
        }


+4 −4
Original line number Original line Diff line number Diff line
@@ -44,12 +44,12 @@ interface IUsbManager
    /* Sets the default package for a USB device
    /* Sets the default package for a USB device
     * (or clears it if the package name is null)
     * (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
    /* Sets the default package for a USB accessory
     * (or clears it if the package name is null)
     * (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. */
    /* Returns true if the caller has permission to access the device. */
    boolean hasDevicePermission(in UsbDevice device);
    boolean hasDevicePermission(in UsbDevice device);
@@ -77,10 +77,10 @@ interface IUsbManager
    void grantAccessoryPermission(in UsbAccessory accessory, int uid);
    void grantAccessoryPermission(in UsbAccessory accessory, int uid);


    /* Returns true if the USB manager has default preferences or permissions for the package */
    /* 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 */
    /* Clears default preferences and permissions for the package */
    void clearDefaults(String packageName);
    void clearDefaults(String packageName, int userId);


    /* Sets the current USB function. */
    /* Sets the current USB function. */
    void setCurrentFunction(String function, boolean makeDefault);
    void setCurrentFunction(String function, boolean makeDefault);
+2 −1
Original line number Original line Diff line number Diff line
@@ -26,6 +26,7 @@ import android.net.Uri;
import android.hardware.usb.UsbAccessory;
import android.hardware.usb.UsbAccessory;
import android.hardware.usb.UsbManager;
import android.hardware.usb.UsbManager;
import android.os.Bundle;
import android.os.Bundle;
import android.os.UserHandle;
import android.util.Log;
import android.util.Log;


import com.android.internal.app.AlertActivity;
import com.android.internal.app.AlertActivity;
@@ -90,7 +91,7 @@ public class UsbAccessoryUriActivity extends AlertActivity
            intent.addCategory(Intent.CATEGORY_BROWSABLE);
            intent.addCategory(Intent.CATEGORY_BROWSABLE);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            try {
            try {
                startActivity(intent);
                startActivityAsUser(intent, UserHandle.CURRENT);
            } catch (ActivityNotFoundException e) {
            } catch (ActivityNotFoundException e) {
                Log.e(TAG, "startActivity failed for " + mUri);
                Log.e(TAG, "startActivity failed for " + mUri);
            }
            }
+14 −15
Original line number Original line Diff line number Diff line
@@ -16,23 +16,21 @@


package com.android.systemui.usb;
package com.android.systemui.usb;


import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog;
import android.content.ComponentName;
import android.content.ComponentName;
import android.content.Context;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.pm.ResolveInfo;
import android.hardware.usb.IUsbManager;
import android.hardware.usb.IUsbManager;
import android.hardware.usb.UsbDevice;
import android.hardware.usb.UsbAccessory;
import android.hardware.usb.UsbAccessory;
import android.hardware.usb.UsbDevice;
import android.hardware.usb.UsbManager;
import android.hardware.usb.UsbManager;
import android.os.Bundle;
import android.os.Bundle;
import android.os.IBinder;
import android.os.IBinder;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.ServiceManager;
import android.os.UserHandle;
import android.util.Log;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View;
@@ -42,7 +40,6 @@ import android.widget.TextView;


import com.android.internal.app.AlertActivity;
import com.android.internal.app.AlertActivity;
import com.android.internal.app.AlertController;
import com.android.internal.app.AlertController;

import com.android.systemui.R;
import com.android.systemui.R;


public class UsbConfirmActivity extends AlertActivity
public class UsbConfirmActivity extends AlertActivity
@@ -117,7 +114,8 @@ public class UsbConfirmActivity extends AlertActivity
            try {
            try {
                IBinder b = ServiceManager.getService(USB_SERVICE);
                IBinder b = ServiceManager.getService(USB_SERVICE);
                IUsbManager service = IUsbManager.Stub.asInterface(b);
                IUsbManager service = IUsbManager.Stub.asInterface(b);
                int uid = mResolveInfo.activityInfo.applicationInfo.uid;
                final int uid = mResolveInfo.activityInfo.applicationInfo.uid;
                final int userId = UserHandle.myUserId();
                boolean alwaysUse = mAlwaysUse.isChecked();
                boolean alwaysUse = mAlwaysUse.isChecked();
                Intent intent = null;
                Intent intent = null;


@@ -129,9 +127,10 @@ public class UsbConfirmActivity extends AlertActivity
                    service.grantDevicePermission(mDevice, uid);
                    service.grantDevicePermission(mDevice, uid);
                    // set or clear default setting
                    // set or clear default setting
                    if (alwaysUse) {
                    if (alwaysUse) {
                        service.setDevicePackage(mDevice, mResolveInfo.activityInfo.packageName);
                        service.setDevicePackage(
                                mDevice, mResolveInfo.activityInfo.packageName, userId);
                    } else {
                    } else {
                        service.setDevicePackage(mDevice, null);
                        service.setDevicePackage(mDevice, null, userId);
                    }
                    }
                } else if (mAccessory != null) {
                } else if (mAccessory != null) {
                    intent = new Intent(UsbManager.ACTION_USB_ACCESSORY_ATTACHED);
                    intent = new Intent(UsbManager.ACTION_USB_ACCESSORY_ATTACHED);
@@ -141,10 +140,10 @@ public class UsbConfirmActivity extends AlertActivity
                    service.grantAccessoryPermission(mAccessory, uid);
                    service.grantAccessoryPermission(mAccessory, uid);
                    // set or clear default setting
                    // set or clear default setting
                    if (alwaysUse) {
                    if (alwaysUse) {
                        service.setAccessoryPackage(mAccessory,
                        service.setAccessoryPackage(
                                mResolveInfo.activityInfo.packageName);
                                mAccessory, mResolveInfo.activityInfo.packageName, userId);
                    } else {
                    } else {
                        service.setAccessoryPackage(mAccessory, null);
                        service.setAccessoryPackage(mAccessory, null, userId);
                    }
                    }
                }
                }


@@ -152,7 +151,7 @@ public class UsbConfirmActivity extends AlertActivity
                intent.setComponent(
                intent.setComponent(
                    new ComponentName(mResolveInfo.activityInfo.packageName,
                    new ComponentName(mResolveInfo.activityInfo.packageName,
                            mResolveInfo.activityInfo.name));
                            mResolveInfo.activityInfo.name));
                startActivity(intent);
                startActivityAsUser(intent, new UserHandle(userId));
            } catch (Exception e) {
            } catch (Exception e) {
                Log.e(TAG, "Unable to start activity", e);
                Log.e(TAG, "Unable to start activity", e);
            }
            }
+6 −3
Original line number Original line Diff line number Diff line
@@ -32,6 +32,7 @@ import android.os.Bundle;
import android.os.IBinder;
import android.os.IBinder;
import android.os.RemoteException;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.ServiceManager;
import android.os.UserHandle;
import android.util.Log;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View;
@@ -67,7 +68,7 @@ public class UsbPermissionActivity extends AlertActivity
        mDevice = (UsbDevice)intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
        mDevice = (UsbDevice)intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
        mAccessory = (UsbAccessory)intent.getParcelableExtra(UsbManager.EXTRA_ACCESSORY);
        mAccessory = (UsbAccessory)intent.getParcelableExtra(UsbManager.EXTRA_ACCESSORY);
        mPendingIntent = (PendingIntent)intent.getParcelableExtra(Intent.EXTRA_INTENT);
        mPendingIntent = (PendingIntent)intent.getParcelableExtra(Intent.EXTRA_INTENT);
        mUid = intent.getIntExtra("uid", 0);
        mUid = intent.getIntExtra(Intent.EXTRA_UID, -1);
        mPackageName = intent.getStringExtra("package");
        mPackageName = intent.getStringExtra("package");


        PackageManager packageManager = getPackageManager();
        PackageManager packageManager = getPackageManager();
@@ -128,7 +129,8 @@ public class UsbPermissionActivity extends AlertActivity
                if (mPermissionGranted) {
                if (mPermissionGranted) {
                    service.grantDevicePermission(mDevice, mUid);
                    service.grantDevicePermission(mDevice, mUid);
                    if (mAlwaysUse.isChecked()) {
                    if (mAlwaysUse.isChecked()) {
                        service.setDevicePackage(mDevice, mPackageName);
                        final int userId = UserHandle.getUserId(mUid);
                        service.setDevicePackage(mDevice, mPackageName, userId);
                    }
                    }
                }
                }
            }
            }
@@ -137,7 +139,8 @@ public class UsbPermissionActivity extends AlertActivity
                if (mPermissionGranted) {
                if (mPermissionGranted) {
                    service.grantAccessoryPermission(mAccessory, mUid);
                    service.grantAccessoryPermission(mAccessory, mUid);
                    if (mAlwaysUse.isChecked()) {
                    if (mAlwaysUse.isChecked()) {
                        service.setAccessoryPackage(mAccessory, mPackageName);
                        final int userId = UserHandle.getUserId(mUid);
                        service.setAccessoryPackage(mAccessory, mPackageName, userId);
                    }
                    }
                }
                }
            }
            }
Loading