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

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

Merge "API for dynamically changing a VD policy." into main

parents 73228efb 512135d1
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -3213,6 +3213,7 @@ package android.companion.virtual {
    method @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public void registerIntentInterceptor(@NonNull android.content.IntentFilter, @NonNull java.util.concurrent.Executor, @NonNull android.companion.virtual.VirtualDeviceManager.IntentInterceptorCallback);
    method public void removeActivityListener(@NonNull android.companion.virtual.VirtualDeviceManager.ActivityListener);
    method public void removeSoundEffectListener(@NonNull android.companion.virtual.VirtualDeviceManager.SoundEffectListener);
    method @FlaggedApi(Flags.FLAG_DYNAMIC_POLICY) @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public void setDevicePolicy(int, int);
    method @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public void setShowPointerIcon(boolean);
    method @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public void unregisterIntentInterceptor(@NonNull android.companion.virtual.VirtualDeviceManager.IntentInterceptorCallback);
  }
+6 −0
Original line number Diff line number Diff line
@@ -69,6 +69,12 @@ interface IVirtualDevice {
    @EnforcePermission("CREATE_VIRTUAL_DEVICE")
    void close();

    /**
     * Specifies a policy for this virtual device.
     */
    @EnforcePermission("CREATE_VIRTUAL_DEVICE")
    void setDevicePolicy(int policyType, int devicePolicy);

    /**
     * Notifies that an audio session being started.
     */
+9 −0
Original line number Diff line number Diff line
@@ -238,6 +238,15 @@ public class VirtualDeviceInternal {
        }
    }

    void setDevicePolicy(@VirtualDeviceParams.DynamicPolicyType int policyType,
            @VirtualDeviceParams.DevicePolicy int devicePolicy) {
        try {
            mVirtualDevice.setDevicePolicy(policyType, devicePolicy);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

    @NonNull
    VirtualDpad createVirtualDpad(@NonNull VirtualDpadConfig config) {
        try {
+25 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package android.companion.virtual;
import static android.media.AudioManager.AUDIO_SESSION_ID_GENERATE;

import android.annotation.CallbackExecutor;
import android.annotation.FlaggedApi;
import android.annotation.IntDef;
import android.annotation.IntRange;
import android.annotation.NonNull;
@@ -59,6 +60,8 @@ import android.os.RemoteException;
import android.util.Log;
import android.view.Surface;

import com.android.internal.util.AnnotationValidations;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -512,6 +515,28 @@ public final class VirtualDeviceManager {
            mVirtualDeviceInternal.close();
        }

        /**
         * Specifies a policy for this virtual device.
         *
         * <p>Policies define the system behavior that may be specific for this virtual device. The
         * given policy must be able to be changed dynamically during the lifetime of the device.
         *
         * @param policyType the type of policy, i.e. which behavior to specify a policy for.
         * @param devicePolicy the value of the policy, i.e. how to interpret the device behavior.
         *
         * @see VirtualDeviceParams#POLICY_TYPE_RECENTS
         */
        @FlaggedApi(Flags.FLAG_DYNAMIC_POLICY)
        @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE)
        public void setDevicePolicy(@VirtualDeviceParams.DynamicPolicyType int policyType,
                @VirtualDeviceParams.DevicePolicy int devicePolicy) {
            AnnotationValidations.validate(
                    VirtualDeviceParams.DynamicPolicyType.class, null, policyType);
            AnnotationValidations.validate(
                    VirtualDeviceParams.DevicePolicy.class, null, devicePolicy);
            mVirtualDeviceInternal.setDevicePolicy(policyType, devicePolicy);
        }

        /**
         * Creates a virtual dpad.
         *
+19 −0
Original line number Diff line number Diff line
@@ -149,6 +149,17 @@ public final class VirtualDeviceParams implements Parcelable {
    @Target({ElementType.TYPE_PARAMETER, ElementType.TYPE_USE})
    public @interface PolicyType {}

    /**
     * Policy types that can be dynamically changed during the virtual device's lifetime.
     *
     * @see VirtualDeviceManager.VirtualDevice#setDevicePolicy
     * @hide
     */
    @IntDef(prefix = "POLICY_TYPE_", value = {POLICY_TYPE_RECENTS})
    @Retention(RetentionPolicy.SOURCE)
    @Target({ElementType.TYPE_PARAMETER, ElementType.TYPE_USE})
    public @interface DynamicPolicyType {}

    /**
     * Tells the sensor framework how to handle sensor requests from contexts associated with this
     * virtual device, namely the sensors returned by
@@ -374,6 +385,14 @@ public final class VirtualDeviceParams implements Parcelable {
        return mDevicePolicies.get(policyType, DEVICE_POLICY_DEFAULT);
    }

    /**
     * Returns all device policies.
     * @hide
     */
    public @NonNull SparseIntArray getDevicePolicies() {
        return mDevicePolicies;
    }

    /**
     * Returns the configurations for all sensors that should be created for this device.
     *
Loading