diff options
6 files changed, 26 insertions, 24 deletions
diff --git a/core/api/system-current.txt b/core/api/system-current.txt index 445a57220757..d185b8d09c5f 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -3448,7 +3448,7 @@ package android.companion.virtual { } public static interface VirtualDeviceManager.ActivityListener { - method @FlaggedApi("android.companion.virtualdevice.flags.activity_control_api") public default void onActivityLaunchBlocked(int, @NonNull android.content.ComponentName, int, @Nullable android.content.IntentSender); + method @FlaggedApi("android.companion.virtualdevice.flags.activity_control_api") public default void onActivityLaunchBlocked(int, @NonNull android.content.ComponentName, @NonNull android.os.UserHandle, @Nullable android.content.IntentSender); method public void onDisplayEmpty(int); method @Deprecated public void onTopActivityChanged(int, @NonNull android.content.ComponentName); method public default void onTopActivityChanged(int, @NonNull android.content.ComponentName, int); @@ -3528,7 +3528,7 @@ package android.companion.virtual { field @Deprecated public static final int NAVIGATION_POLICY_DEFAULT_BLOCKED = 1; // 0x1 field @FlaggedApi("android.companion.virtual.flags.dynamic_policy") public static final int POLICY_TYPE_ACTIVITY = 3; // 0x3 field public static final int POLICY_TYPE_AUDIO = 1; // 0x1 - field @FlaggedApi("android.companion.virtualdevice.flags.activity_control_api") public static final int POLICY_TYPE_BLOCKED_ACTIVITY_BEHAVIOR = 6; // 0x6 + field @FlaggedApi("android.companion.virtualdevice.flags.activity_control_api") public static final int POLICY_TYPE_BLOCKED_ACTIVITY = 6; // 0x6 field @FlaggedApi("android.companion.virtual.flags.virtual_camera") public static final int POLICY_TYPE_CAMERA = 5; // 0x5 field @FlaggedApi("android.companion.virtual.flags.cross_device_clipboard") public static final int POLICY_TYPE_CLIPBOARD = 4; // 0x4 field public static final int POLICY_TYPE_RECENTS = 2; // 0x2 diff --git a/core/java/android/companion/virtual/IVirtualDeviceActivityListener.aidl b/core/java/android/companion/virtual/IVirtualDeviceActivityListener.aidl index 564fb023dc7b..7c674f9cde6b 100644 --- a/core/java/android/companion/virtual/IVirtualDeviceActivityListener.aidl +++ b/core/java/android/companion/virtual/IVirtualDeviceActivityListener.aidl @@ -18,6 +18,7 @@ package android.companion.virtual; import android.content.ComponentName; import android.content.IntentSender; +import android.os.UserHandle; /** * Interface to listen for activity changes in a virtual device. @@ -48,9 +49,9 @@ oneway interface IVirtualDeviceActivityListener { * * @param displayId The display ID on which the activity tried to launch. * @param componentName The component name of the blocked activity. - * @param userId The user ID associated with the blocked activity. + * @param user The user associated with the blocked activity. * @param intentSender The original sender of the intent. */ - void onActivityLaunchBlocked(int displayId, in ComponentName componentName, int userId, + void onActivityLaunchBlocked(int displayId, in ComponentName componentName, in UserHandle user, in IntentSender intentSender); } diff --git a/core/java/android/companion/virtual/VirtualDeviceInternal.java b/core/java/android/companion/virtual/VirtualDeviceInternal.java index 19eb497dbd7a..9636cd44cad9 100644 --- a/core/java/android/companion/virtual/VirtualDeviceInternal.java +++ b/core/java/android/companion/virtual/VirtualDeviceInternal.java @@ -19,7 +19,7 @@ package android.companion.virtual; import static android.companion.virtual.VirtualDeviceParams.DEVICE_POLICY_CUSTOM; import static android.companion.virtual.VirtualDeviceParams.POLICY_TYPE_ACTIVITY; import static android.companion.virtual.VirtualDeviceParams.POLICY_TYPE_AUDIO; -import static android.companion.virtual.VirtualDeviceParams.POLICY_TYPE_BLOCKED_ACTIVITY_BEHAVIOR; +import static android.companion.virtual.VirtualDeviceParams.POLICY_TYPE_BLOCKED_ACTIVITY; import static android.companion.virtual.VirtualDeviceParams.POLICY_TYPE_CLIPBOARD; import static android.companion.virtual.VirtualDeviceParams.POLICY_TYPE_RECENTS; @@ -65,6 +65,7 @@ import android.os.IBinder; import android.os.Looper; import android.os.RemoteException; import android.os.ResultReceiver; +import android.os.UserHandle; import android.util.ArrayMap; import android.view.WindowManager; @@ -136,14 +137,14 @@ public class VirtualDeviceInternal { @Override public void onActivityLaunchBlocked(int displayId, ComponentName componentName, - @UserIdInt int userId, IntentSender intentSender) { + UserHandle user, IntentSender intentSender) { final long token = Binder.clearCallingIdentity(); try { synchronized (mActivityListenersLock) { for (int i = 0; i < mActivityListeners.size(); i++) { mActivityListeners.valueAt(i) .onActivityLaunchBlocked( - displayId, componentName, userId, intentSender); + displayId, componentName, user, intentSender); } } } finally { @@ -292,7 +293,7 @@ public class VirtualDeviceInternal { case POLICY_TYPE_RECENTS: case POLICY_TYPE_CLIPBOARD: case POLICY_TYPE_ACTIVITY: - case POLICY_TYPE_BLOCKED_ACTIVITY_BEHAVIOR: + case POLICY_TYPE_BLOCKED_ACTIVITY: break; default: throw new IllegalArgumentException("Device policy " + policyType @@ -595,10 +596,10 @@ public class VirtualDeviceInternal { } public void onActivityLaunchBlocked(int displayId, ComponentName componentName, - @UserIdInt int userId, IntentSender intentSender) { + UserHandle user, IntentSender intentSender) { mExecutor.execute(() -> mActivityListener.onActivityLaunchBlocked( - displayId, componentName, userId, intentSender)); + displayId, componentName, user, intentSender)); } } diff --git a/core/java/android/companion/virtual/VirtualDeviceManager.java b/core/java/android/companion/virtual/VirtualDeviceManager.java index 8b60580ec114..16fee108c956 100644 --- a/core/java/android/companion/virtual/VirtualDeviceManager.java +++ b/core/java/android/companion/virtual/VirtualDeviceManager.java @@ -67,6 +67,7 @@ import android.media.AudioManager; import android.os.Binder; import android.os.Looper; import android.os.RemoteException; +import android.os.UserHandle; import android.util.ArraySet; import android.util.Log; import android.view.Display; @@ -1264,7 +1265,7 @@ public final class VirtualDeviceManager { * * @param displayId The display ID on which the activity tried to launch. * @param componentName The component name of the blocked activity. - * @param userId The user ID associated with the blocked activity. + * @param user The user associated with the blocked activity. * @param intentSender The original sender of the intent. May be {@code null} if the sender * expects an activity result to be reported. In that case * {@link android.app.Activity#RESULT_CANCELED} was already reported back because the @@ -1276,7 +1277,7 @@ public final class VirtualDeviceManager { */ @FlaggedApi(android.companion.virtualdevice.flags.Flags.FLAG_ACTIVITY_CONTROL_API) default void onActivityLaunchBlocked(int displayId, @NonNull ComponentName componentName, - @UserIdInt int userId, @Nullable IntentSender intentSender) {} + @NonNull UserHandle user, @Nullable IntentSender intentSender) {} } /** diff --git a/core/java/android/companion/virtual/VirtualDeviceParams.java b/core/java/android/companion/virtual/VirtualDeviceParams.java index c1fc51d3ebd4..03b72bdb8823 100644 --- a/core/java/android/companion/virtual/VirtualDeviceParams.java +++ b/core/java/android/companion/virtual/VirtualDeviceParams.java @@ -160,7 +160,7 @@ public final class VirtualDeviceParams implements Parcelable { */ @IntDef(prefix = "POLICY_TYPE_", value = {POLICY_TYPE_SENSORS, POLICY_TYPE_AUDIO, POLICY_TYPE_RECENTS, POLICY_TYPE_ACTIVITY, POLICY_TYPE_CAMERA, - POLICY_TYPE_BLOCKED_ACTIVITY_BEHAVIOR}) + POLICY_TYPE_BLOCKED_ACTIVITY}) @Retention(RetentionPolicy.SOURCE) @Target({ElementType.TYPE_PARAMETER, ElementType.TYPE_USE}) public @interface PolicyType {} @@ -172,7 +172,7 @@ public final class VirtualDeviceParams implements Parcelable { * @hide */ @IntDef(prefix = "POLICY_TYPE_", value = {POLICY_TYPE_RECENTS, POLICY_TYPE_ACTIVITY, - POLICY_TYPE_CLIPBOARD, POLICY_TYPE_BLOCKED_ACTIVITY_BEHAVIOR}) + POLICY_TYPE_CLIPBOARD, POLICY_TYPE_BLOCKED_ACTIVITY}) @Retention(RetentionPolicy.SOURCE) @Target({ElementType.TYPE_PARAMETER, ElementType.TYPE_USE}) public @interface DynamicPolicyType {} @@ -242,7 +242,7 @@ public final class VirtualDeviceParams implements Parcelable { * @see VirtualDeviceManager.VirtualDevice#removeActivityPolicyExemption */ // TODO(b/333443509): Update the documentation of custom policy and link to the new policy - // POLICY_TYPE_BLOCKED_ACTIVITY_BEHAVIOR + // POLICY_TYPE_BLOCKED_ACTIVITY @FlaggedApi(Flags.FLAG_DYNAMIC_POLICY) public static final int POLICY_TYPE_ACTIVITY = 3; @@ -292,7 +292,7 @@ public final class VirtualDeviceParams implements Parcelable { */ // TODO(b/333443509): Link to POLICY_TYPE_ACTIVITY @FlaggedApi(android.companion.virtualdevice.flags.Flags.FLAG_ACTIVITY_CONTROL_API) - public static final int POLICY_TYPE_BLOCKED_ACTIVITY_BEHAVIOR = 6; + public static final int POLICY_TYPE_BLOCKED_ACTIVITY = 6; private final int mLockState; @NonNull private final ArraySet<UserHandle> mUsersWithMatchingAccounts; @@ -1206,7 +1206,7 @@ public final class VirtualDeviceParams implements Parcelable { } if (!android.companion.virtualdevice.flags.Flags.activityControlApi()) { - mDevicePolicies.delete(POLICY_TYPE_BLOCKED_ACTIVITY_BEHAVIOR); + mDevicePolicies.delete(POLICY_TYPE_BLOCKED_ACTIVITY); } if ((mAudioPlaybackSessionId != AUDIO_SESSION_ID_GENERATE diff --git a/services/companion/java/com/android/server/companion/virtual/VirtualDeviceImpl.java b/services/companion/java/com/android/server/companion/virtual/VirtualDeviceImpl.java index 2db54435199b..f42bb74b3d5d 100644 --- a/services/companion/java/com/android/server/companion/virtual/VirtualDeviceImpl.java +++ b/services/companion/java/com/android/server/companion/virtual/VirtualDeviceImpl.java @@ -24,7 +24,7 @@ import static android.companion.virtual.VirtualDeviceParams.DEVICE_POLICY_DEFAUL import static android.companion.virtual.VirtualDeviceParams.NAVIGATION_POLICY_DEFAULT_ALLOWED; import static android.companion.virtual.VirtualDeviceParams.POLICY_TYPE_ACTIVITY; import static android.companion.virtual.VirtualDeviceParams.POLICY_TYPE_AUDIO; -import static android.companion.virtual.VirtualDeviceParams.POLICY_TYPE_BLOCKED_ACTIVITY_BEHAVIOR; +import static android.companion.virtual.VirtualDeviceParams.POLICY_TYPE_BLOCKED_ACTIVITY; import static android.companion.virtual.VirtualDeviceParams.POLICY_TYPE_CAMERA; import static android.companion.virtual.VirtualDeviceParams.POLICY_TYPE_CLIPBOARD; import static android.companion.virtual.VirtualDeviceParams.POLICY_TYPE_RECENTS; @@ -242,11 +242,11 @@ final class VirtualDeviceImpl extends IVirtualDevice.Stub @Override public void onActivityLaunchBlocked(int displayId, - @NonNull ComponentName componentName, @UserIdInt int userId, + @NonNull ComponentName componentName, @NonNull UserHandle user, @Nullable IntentSender intentSender) { try { mActivityListener.onActivityLaunchBlocked( - displayId, componentName, userId, intentSender); + displayId, componentName, user, intentSender); } catch (RemoteException e) { Slog.w(TAG, "Unable to call mActivityListener for display: " + displayId, e); } @@ -744,7 +744,7 @@ final class VirtualDeviceImpl extends IVirtualDevice.Stub } } break; - case POLICY_TYPE_BLOCKED_ACTIVITY_BEHAVIOR: + case POLICY_TYPE_BLOCKED_ACTIVITY: if (android.companion.virtualdevice.flags.Flags.activityControlApi()) { synchronized (mVirtualDeviceLock) { mDevicePolicies.put(policyType, devicePolicy); @@ -1383,8 +1383,7 @@ final class VirtualDeviceImpl extends IVirtualDevice.Stub mActivityListenerAdapter.onActivityLaunchBlocked( displayId, activityInfo.getComponentName(), - UserHandle.getUserHandleForUid( - activityInfo.applicationInfo.uid).getIdentifier(), + UserHandle.getUserHandleForUid(activityInfo.applicationInfo.uid), intentSender); } } @@ -1400,7 +1399,7 @@ final class VirtualDeviceImpl extends IVirtualDevice.Stub return true; } // Do not show the dialog if disabled by policy. - return getDevicePolicy(POLICY_TYPE_BLOCKED_ACTIVITY_BEHAVIOR) == DEVICE_POLICY_DEFAULT; + return getDevicePolicy(POLICY_TYPE_BLOCKED_ACTIVITY) == DEVICE_POLICY_DEFAULT; } private void onSecureWindowShown(int displayId, int uid) { |