Loading core/java/android/content/ClipboardManager.java +36 −9 Original line number Diff line number Diff line Loading @@ -70,6 +70,23 @@ public class ClipboardManager extends android.text.ClipboardManager { */ public static final boolean DEVICE_CONFIG_DEFAULT_SHOW_ACCESS_NOTIFICATIONS = true; /** * DeviceConfig property, within the clipboard namespace, that determines whether VirtualDevices * are allowed to have siloed Clipboards for the apps running on them. If false, then clipboard * access is blocked entirely for apps running on VirtualDevices. * * @hide */ public static final String DEVICE_CONFIG_ALLOW_VIRTUALDEVICE_SILOS = "allow_virtualdevice_silos"; /** * Default value for the DEVICE_CONFIG_ALLOW_VIRTUALDEVICE_SILOS property. * * @hide */ public static final boolean DEVICE_CONFIG_DEFAULT_ALLOW_VIRTUALDEVICE_SILOS = false; private final Context mContext; private final Handler mHandler; private final IClipboard mService; Loading Loading @@ -133,7 +150,8 @@ public class ClipboardManager extends android.text.ClipboardManager { clip, mContext.getOpPackageName(), mContext.getAttributionTag(), mContext.getUserId()); mContext.getUserId(), mContext.getDeviceId()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading Loading @@ -162,6 +180,7 @@ public class ClipboardManager extends android.text.ClipboardManager { mContext.getOpPackageName(), mContext.getAttributionTag(), mContext.getUserId(), mContext.getDeviceId(), sourcePackage); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); Loading @@ -178,7 +197,8 @@ public class ClipboardManager extends android.text.ClipboardManager { mService.clearPrimaryClip( mContext.getOpPackageName(), mContext.getAttributionTag(), mContext.getUserId()); mContext.getUserId(), mContext.getDeviceId()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading @@ -197,7 +217,8 @@ public class ClipboardManager extends android.text.ClipboardManager { return mService.getPrimaryClip( mContext.getOpPackageName(), mContext.getAttributionTag(), mContext.getUserId()); mContext.getUserId(), mContext.getDeviceId()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading @@ -217,7 +238,8 @@ public class ClipboardManager extends android.text.ClipboardManager { return mService.getPrimaryClipDescription( mContext.getOpPackageName(), mContext.getAttributionTag(), mContext.getUserId()); mContext.getUserId(), mContext.getDeviceId()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading @@ -234,7 +256,8 @@ public class ClipboardManager extends android.text.ClipboardManager { return mService.hasPrimaryClip( mContext.getOpPackageName(), mContext.getAttributionTag(), mContext.getUserId()); mContext.getUserId(), mContext.getDeviceId()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading @@ -248,7 +271,8 @@ public class ClipboardManager extends android.text.ClipboardManager { mPrimaryClipChangedServiceListener, mContext.getOpPackageName(), mContext.getAttributionTag(), mContext.getUserId()); mContext.getUserId(), mContext.getDeviceId()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading @@ -266,7 +290,8 @@ public class ClipboardManager extends android.text.ClipboardManager { mPrimaryClipChangedServiceListener, mContext.getOpPackageName(), mContext.getAttributionTag(), mContext.getUserId()); mContext.getUserId(), mContext.getDeviceId()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading Loading @@ -306,7 +331,8 @@ public class ClipboardManager extends android.text.ClipboardManager { return mService.hasClipboardText( mContext.getOpPackageName(), mContext.getAttributionTag(), mContext.getUserId()); mContext.getUserId(), mContext.getDeviceId()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading @@ -326,7 +352,8 @@ public class ClipboardManager extends android.text.ClipboardManager { return mService.getPrimaryClipSource( mContext.getOpPackageName(), mContext.getAttributionTag(), mContext.getUserId()); mContext.getUserId(), mContext.getDeviceId()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading core/java/android/content/IClipboard.aidl +15 −11 Original line number Diff line number Diff line Loading @@ -26,22 +26,26 @@ import android.content.IOnPrimaryClipChangedListener; * {@hide} */ interface IClipboard { void setPrimaryClip(in ClipData clip, String callingPackage, String attributionTag, int userId); void setPrimaryClipAsPackage(in ClipData clip, String callingPackage, String attributionTag, int userId, String sourcePackage); void clearPrimaryClip(String callingPackage, String attributionTag, int userId); ClipData getPrimaryClip(String pkg, String attributionTag, int userId); ClipDescription getPrimaryClipDescription(String callingPackage, String attributionTag, int userId); boolean hasPrimaryClip(String callingPackage, String attributionTag, int userId); void setPrimaryClip(in ClipData clip, String callingPackage, String attributionTag, int userId, int deviceId); void setPrimaryClipAsPackage(in ClipData clip, String callingPackage, String attributionTag, int userId, int deviceId, String sourcePackage); void clearPrimaryClip(String callingPackage, String attributionTag, int userId, int deviceId); ClipData getPrimaryClip(String pkg, String attributionTag, int userId, int deviceId); ClipDescription getPrimaryClipDescription(String callingPackage, String attributionTag, int userId, int deviceId); boolean hasPrimaryClip(String callingPackage, String attributionTag, int userId, int deviceId); void addPrimaryClipChangedListener(in IOnPrimaryClipChangedListener listener, String callingPackage, String attributionTag, int userId); String callingPackage, String attributionTag, int userId, int deviceId); void removePrimaryClipChangedListener(in IOnPrimaryClipChangedListener listener, String callingPackage, String attributionTag, int userId); String callingPackage, String attributionTag, int userId, int deviceId); /** * Returns true if the clipboard contains text; false otherwise. */ boolean hasClipboardText(String callingPackage, String attributionTag, int userId); boolean hasClipboardText(String callingPackage, String attributionTag, int userId, int deviceId); String getPrimaryClipSource(String callingPackage, String attributionTag, int userId); String getPrimaryClipSource(String callingPackage, String attributionTag, int userId, int deviceId); } services/companion/java/com/android/server/companion/virtual/VirtualDeviceImpl.java +1 −2 Original line number Diff line number Diff line Loading @@ -88,7 +88,6 @@ import java.io.PrintWriter; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Set; import java.util.function.Consumer; Loading @@ -114,7 +113,7 @@ final class VirtualDeviceImpl extends IVirtualDevice.Stub private final CameraAccessController mCameraAccessController; private VirtualAudioController mVirtualAudioController; @VisibleForTesting final Set<Integer> mVirtualDisplayIds = new ArraySet<>(); final ArraySet<Integer> mVirtualDisplayIds = new ArraySet<>(); private final OnDeviceCloseListener mOnDeviceCloseListener; private final IBinder mAppToken; private final VirtualDeviceParams mParams; Loading services/companion/java/com/android/server/companion/virtual/VirtualDeviceManagerService.java +15 −2 Original line number Diff line number Diff line Loading @@ -67,7 +67,6 @@ import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Consumer; Loading Loading @@ -471,7 +470,7 @@ public class VirtualDeviceManagerService extends SystemService { } @Override public @NonNull Set<Integer> getDeviceIdsForUid(int uid) { public @NonNull ArraySet<Integer> getDeviceIdsForUid(int uid) { ArraySet<Integer> result = new ArraySet<>(); synchronized (mVirtualDeviceManagerLock) { int size = mVirtualDevices.size(); Loading Loading @@ -586,6 +585,20 @@ public class VirtualDeviceManagerService extends SystemService { return false; } @Override public @NonNull ArraySet<Integer> getDisplayIdsForDevice(int deviceId) { synchronized (mVirtualDeviceManagerLock) { int size = mVirtualDevices.size(); for (int i = 0; i < size; i++) { VirtualDeviceImpl device = mVirtualDevices.valueAt(i); if (device.getDeviceId() == deviceId) { return new ArraySet<>(device.mVirtualDisplayIds); } } } return new ArraySet<>(); } @Override public void registerVirtualDisplayListener( @NonNull VirtualDisplayListener listener) { Loading services/core/java/com/android/server/clipboard/ClipboardService.java +310 −89 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
core/java/android/content/ClipboardManager.java +36 −9 Original line number Diff line number Diff line Loading @@ -70,6 +70,23 @@ public class ClipboardManager extends android.text.ClipboardManager { */ public static final boolean DEVICE_CONFIG_DEFAULT_SHOW_ACCESS_NOTIFICATIONS = true; /** * DeviceConfig property, within the clipboard namespace, that determines whether VirtualDevices * are allowed to have siloed Clipboards for the apps running on them. If false, then clipboard * access is blocked entirely for apps running on VirtualDevices. * * @hide */ public static final String DEVICE_CONFIG_ALLOW_VIRTUALDEVICE_SILOS = "allow_virtualdevice_silos"; /** * Default value for the DEVICE_CONFIG_ALLOW_VIRTUALDEVICE_SILOS property. * * @hide */ public static final boolean DEVICE_CONFIG_DEFAULT_ALLOW_VIRTUALDEVICE_SILOS = false; private final Context mContext; private final Handler mHandler; private final IClipboard mService; Loading Loading @@ -133,7 +150,8 @@ public class ClipboardManager extends android.text.ClipboardManager { clip, mContext.getOpPackageName(), mContext.getAttributionTag(), mContext.getUserId()); mContext.getUserId(), mContext.getDeviceId()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading Loading @@ -162,6 +180,7 @@ public class ClipboardManager extends android.text.ClipboardManager { mContext.getOpPackageName(), mContext.getAttributionTag(), mContext.getUserId(), mContext.getDeviceId(), sourcePackage); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); Loading @@ -178,7 +197,8 @@ public class ClipboardManager extends android.text.ClipboardManager { mService.clearPrimaryClip( mContext.getOpPackageName(), mContext.getAttributionTag(), mContext.getUserId()); mContext.getUserId(), mContext.getDeviceId()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading @@ -197,7 +217,8 @@ public class ClipboardManager extends android.text.ClipboardManager { return mService.getPrimaryClip( mContext.getOpPackageName(), mContext.getAttributionTag(), mContext.getUserId()); mContext.getUserId(), mContext.getDeviceId()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading @@ -217,7 +238,8 @@ public class ClipboardManager extends android.text.ClipboardManager { return mService.getPrimaryClipDescription( mContext.getOpPackageName(), mContext.getAttributionTag(), mContext.getUserId()); mContext.getUserId(), mContext.getDeviceId()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading @@ -234,7 +256,8 @@ public class ClipboardManager extends android.text.ClipboardManager { return mService.hasPrimaryClip( mContext.getOpPackageName(), mContext.getAttributionTag(), mContext.getUserId()); mContext.getUserId(), mContext.getDeviceId()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading @@ -248,7 +271,8 @@ public class ClipboardManager extends android.text.ClipboardManager { mPrimaryClipChangedServiceListener, mContext.getOpPackageName(), mContext.getAttributionTag(), mContext.getUserId()); mContext.getUserId(), mContext.getDeviceId()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading @@ -266,7 +290,8 @@ public class ClipboardManager extends android.text.ClipboardManager { mPrimaryClipChangedServiceListener, mContext.getOpPackageName(), mContext.getAttributionTag(), mContext.getUserId()); mContext.getUserId(), mContext.getDeviceId()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading Loading @@ -306,7 +331,8 @@ public class ClipboardManager extends android.text.ClipboardManager { return mService.hasClipboardText( mContext.getOpPackageName(), mContext.getAttributionTag(), mContext.getUserId()); mContext.getUserId(), mContext.getDeviceId()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading @@ -326,7 +352,8 @@ public class ClipboardManager extends android.text.ClipboardManager { return mService.getPrimaryClipSource( mContext.getOpPackageName(), mContext.getAttributionTag(), mContext.getUserId()); mContext.getUserId(), mContext.getDeviceId()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading
core/java/android/content/IClipboard.aidl +15 −11 Original line number Diff line number Diff line Loading @@ -26,22 +26,26 @@ import android.content.IOnPrimaryClipChangedListener; * {@hide} */ interface IClipboard { void setPrimaryClip(in ClipData clip, String callingPackage, String attributionTag, int userId); void setPrimaryClipAsPackage(in ClipData clip, String callingPackage, String attributionTag, int userId, String sourcePackage); void clearPrimaryClip(String callingPackage, String attributionTag, int userId); ClipData getPrimaryClip(String pkg, String attributionTag, int userId); ClipDescription getPrimaryClipDescription(String callingPackage, String attributionTag, int userId); boolean hasPrimaryClip(String callingPackage, String attributionTag, int userId); void setPrimaryClip(in ClipData clip, String callingPackage, String attributionTag, int userId, int deviceId); void setPrimaryClipAsPackage(in ClipData clip, String callingPackage, String attributionTag, int userId, int deviceId, String sourcePackage); void clearPrimaryClip(String callingPackage, String attributionTag, int userId, int deviceId); ClipData getPrimaryClip(String pkg, String attributionTag, int userId, int deviceId); ClipDescription getPrimaryClipDescription(String callingPackage, String attributionTag, int userId, int deviceId); boolean hasPrimaryClip(String callingPackage, String attributionTag, int userId, int deviceId); void addPrimaryClipChangedListener(in IOnPrimaryClipChangedListener listener, String callingPackage, String attributionTag, int userId); String callingPackage, String attributionTag, int userId, int deviceId); void removePrimaryClipChangedListener(in IOnPrimaryClipChangedListener listener, String callingPackage, String attributionTag, int userId); String callingPackage, String attributionTag, int userId, int deviceId); /** * Returns true if the clipboard contains text; false otherwise. */ boolean hasClipboardText(String callingPackage, String attributionTag, int userId); boolean hasClipboardText(String callingPackage, String attributionTag, int userId, int deviceId); String getPrimaryClipSource(String callingPackage, String attributionTag, int userId); String getPrimaryClipSource(String callingPackage, String attributionTag, int userId, int deviceId); }
services/companion/java/com/android/server/companion/virtual/VirtualDeviceImpl.java +1 −2 Original line number Diff line number Diff line Loading @@ -88,7 +88,6 @@ import java.io.PrintWriter; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Set; import java.util.function.Consumer; Loading @@ -114,7 +113,7 @@ final class VirtualDeviceImpl extends IVirtualDevice.Stub private final CameraAccessController mCameraAccessController; private VirtualAudioController mVirtualAudioController; @VisibleForTesting final Set<Integer> mVirtualDisplayIds = new ArraySet<>(); final ArraySet<Integer> mVirtualDisplayIds = new ArraySet<>(); private final OnDeviceCloseListener mOnDeviceCloseListener; private final IBinder mAppToken; private final VirtualDeviceParams mParams; Loading
services/companion/java/com/android/server/companion/virtual/VirtualDeviceManagerService.java +15 −2 Original line number Diff line number Diff line Loading @@ -67,7 +67,6 @@ import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Consumer; Loading Loading @@ -471,7 +470,7 @@ public class VirtualDeviceManagerService extends SystemService { } @Override public @NonNull Set<Integer> getDeviceIdsForUid(int uid) { public @NonNull ArraySet<Integer> getDeviceIdsForUid(int uid) { ArraySet<Integer> result = new ArraySet<>(); synchronized (mVirtualDeviceManagerLock) { int size = mVirtualDevices.size(); Loading Loading @@ -586,6 +585,20 @@ public class VirtualDeviceManagerService extends SystemService { return false; } @Override public @NonNull ArraySet<Integer> getDisplayIdsForDevice(int deviceId) { synchronized (mVirtualDeviceManagerLock) { int size = mVirtualDevices.size(); for (int i = 0; i < size; i++) { VirtualDeviceImpl device = mVirtualDevices.valueAt(i); if (device.getDeviceId() == deviceId) { return new ArraySet<>(device.mVirtualDisplayIds); } } } return new ArraySet<>(); } @Override public void registerVirtualDisplayListener( @NonNull VirtualDisplayListener listener) { Loading
services/core/java/com/android/server/clipboard/ClipboardService.java +310 −89 File changed.Preview size limit exceeded, changes collapsed. Show changes