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

Commit 466c8e59 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Address new activity control API feedback" into main

parents a3d51823 cca40706
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -3450,7 +3450,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);
@@ -3530,7 +3530,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
+3 −2
Original line number Diff line number Diff line
@@ -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);
}
+7 −6
Original line number Diff line number Diff line
@@ -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));
        }
    }

+3 −2
Original line number Diff line number Diff line
@@ -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;
@@ -1263,7 +1264,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
@@ -1275,7 +1276,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) {}
    }

    /**
+5 −5
Original line number Diff line number Diff line
@@ -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
Loading