Making the clipboard work across users.
When copying from the parent: the ClipData can be pasted in the managed profile.
When copying from a managed profile: it can be pasted in the parent,
unless the policies says it's disabled. In which case, the clipboard of the parent becomes empty.
Supporting content uris.
BUG: 15186236
Change-Id: I522564a7c07ff21df137adcda980bb52e5739964
diff --git a/core/java/android/app/ActivityManagerNative.java b/core/java/android/app/ActivityManagerNative.java
index 342155d..318a520 100644
--- a/core/java/android/app/ActivityManagerNative.java
+++ b/core/java/android/app/ActivityManagerNative.java
@@ -1661,8 +1661,10 @@
String targetPkg = data.readString();
Uri uri = Uri.CREATOR.createFromParcel(data);
int mode = data.readInt();
- int userId = data.readInt();
- grantUriPermissionFromOwner(owner, fromUid, targetPkg, uri, mode, userId);
+ int sourceUserId = data.readInt();
+ int targetUserId = data.readInt();
+ grantUriPermissionFromOwner(owner, fromUid, targetPkg, uri, mode, sourceUserId,
+ targetUserId);
reply.writeNoException();
return true;
}
@@ -4343,7 +4345,7 @@
}
public void grantUriPermissionFromOwner(IBinder owner, int fromUid, String targetPkg,
- Uri uri, int mode, int userId) throws RemoteException {
+ Uri uri, int mode, int sourceUserId, int targetUserId) throws RemoteException {
Parcel data = Parcel.obtain();
Parcel reply = Parcel.obtain();
data.writeInterfaceToken(IActivityManager.descriptor);
@@ -4352,7 +4354,8 @@
data.writeString(targetPkg);
uri.writeToParcel(data, 0);
data.writeInt(mode);
- data.writeInt(userId);
+ data.writeInt(sourceUserId);
+ data.writeInt(targetUserId);
mRemote.transact(GRANT_URI_PERMISSION_TRANSACTION, data, reply, 0);
reply.readException();
data.recycle();