diff options
11 files changed, 76 insertions, 172 deletions
diff --git a/core/api/system-current.txt b/core/api/system-current.txt index 16c70174d5c2..0dafc9ce66bf 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -3405,12 +3405,12 @@ package android.companion.virtual { public final class VirtualDeviceManager { method @NonNull @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public android.companion.virtual.VirtualDeviceManager.VirtualDevice createVirtualDevice(int, @NonNull android.companion.virtual.VirtualDeviceParams); - method @FlaggedApi("android.companion.virtual.flags.persistent_device_id_api") @NonNull public java.util.Set<java.lang.String> getAllPersistentDeviceIds(); - method @FlaggedApi("android.companion.virtual.flags.persistent_device_id_api") @Nullable public CharSequence getDisplayNameForPersistentDeviceId(@NonNull String); + method @NonNull public java.util.Set<java.lang.String> getAllPersistentDeviceIds(); + method @Nullable public CharSequence getDisplayNameForPersistentDeviceId(@NonNull String); field public static final int LAUNCH_FAILURE_NO_ACTIVITY = 2; // 0x2 field public static final int LAUNCH_FAILURE_PENDING_INTENT_CANCELED = 1; // 0x1 field public static final int LAUNCH_SUCCESS = 0; // 0x0 - field @FlaggedApi("android.companion.virtual.flags.persistent_device_id_api") public static final String PERSISTENT_DEVICE_ID_DEFAULT = "default:0"; + field public static final String PERSISTENT_DEVICE_ID_DEFAULT = "default:0"; } public static interface VirtualDeviceManager.ActivityListener { @@ -3432,7 +3432,7 @@ package android.companion.virtual { public static class VirtualDeviceManager.VirtualDevice implements java.lang.AutoCloseable { method public void addActivityListener(@NonNull java.util.concurrent.Executor, @NonNull android.companion.virtual.VirtualDeviceManager.ActivityListener); - method @FlaggedApi("android.companion.virtual.flags.dynamic_policy") public void addActivityPolicyExemption(@NonNull android.content.ComponentName); + method public void addActivityPolicyExemption(@NonNull android.content.ComponentName); method @FlaggedApi("android.companion.virtualdevice.flags.activity_control_api") public void addActivityPolicyExemption(@NonNull android.companion.virtual.ActivityPolicyExemption); method public void addSoundEffectListener(@NonNull java.util.concurrent.Executor, @NonNull android.companion.virtual.VirtualDeviceManager.SoundEffectListener); method public void close(); @@ -3448,7 +3448,7 @@ package android.companion.virtual { method @Deprecated @NonNull public android.hardware.input.VirtualMouse createVirtualMouse(@NonNull android.hardware.display.VirtualDisplay, @NonNull String, int, int); method @NonNull public android.hardware.input.VirtualNavigationTouchpad createVirtualNavigationTouchpad(@NonNull android.hardware.input.VirtualNavigationTouchpadConfig); method @FlaggedApi("android.companion.virtualdevice.flags.virtual_rotary") @NonNull public android.hardware.input.VirtualRotaryEncoder createVirtualRotaryEncoder(@NonNull android.hardware.input.VirtualRotaryEncoderConfig); - method @FlaggedApi("android.companion.virtual.flags.virtual_stylus") @NonNull public android.hardware.input.VirtualStylus createVirtualStylus(@NonNull android.hardware.input.VirtualStylusConfig); + method @NonNull public android.hardware.input.VirtualStylus createVirtualStylus(@NonNull android.hardware.input.VirtualStylusConfig); method @NonNull public android.hardware.input.VirtualTouchscreen createVirtualTouchscreen(@NonNull android.hardware.input.VirtualTouchscreenConfig); method @Deprecated @NonNull public android.hardware.input.VirtualTouchscreen createVirtualTouchscreen(@NonNull android.hardware.display.VirtualDisplay, @NonNull String, int, int); method public int getDeviceId(); @@ -3458,10 +3458,10 @@ package android.companion.virtual { method public void launchPendingIntent(int, @NonNull android.app.PendingIntent, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.IntConsumer); method 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 @FlaggedApi("android.companion.virtual.flags.dynamic_policy") public void removeActivityPolicyExemption(@NonNull android.content.ComponentName); + method public void removeActivityPolicyExemption(@NonNull android.content.ComponentName); method @FlaggedApi("android.companion.virtualdevice.flags.activity_control_api") public void removeActivityPolicyExemption(@NonNull android.companion.virtual.ActivityPolicyExemption); method public void removeSoundEffectListener(@NonNull android.companion.virtual.VirtualDeviceManager.SoundEffectListener); - method @FlaggedApi("android.companion.virtual.flags.dynamic_policy") public void setDevicePolicy(int, int); + method public void setDevicePolicy(int, int); method @FlaggedApi("android.companion.virtualdevice.flags.activity_control_api") public void setDevicePolicy(int, int, int); method @FlaggedApi("android.companion.virtual.flags.vdm_custom_ime") public void setDisplayImePolicy(int, int); method public void setShowPointerIcon(boolean); @@ -3498,11 +3498,11 @@ package android.companion.virtual { field public static final int LOCK_STATE_DEFAULT = 0; // 0x0 field @Deprecated public static final int NAVIGATION_POLICY_DEFAULT_ALLOWED = 0; // 0x0 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_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 = 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_CLIPBOARD = 4; // 0x4 field @FlaggedApi("android.companion.virtualdevice.flags.default_device_camera_access_policy") public static final int POLICY_TYPE_DEFAULT_DEVICE_CAMERA_ACCESS = 7; // 0x7 field public static final int POLICY_TYPE_RECENTS = 2; // 0x2 field public static final int POLICY_TYPE_SENSORS = 0; // 0x0 @@ -5970,13 +5970,13 @@ package android.hardware.input { method @NonNull public android.hardware.input.VirtualRotaryEncoderScrollEvent.Builder setScrollAmount(@FloatRange(from=-1.0F, to=1.0f) float); } - @FlaggedApi("android.companion.virtual.flags.virtual_stylus") public class VirtualStylus implements java.io.Closeable { + public class VirtualStylus implements java.io.Closeable { method public void close(); method public void sendButtonEvent(@NonNull android.hardware.input.VirtualStylusButtonEvent); method public void sendMotionEvent(@NonNull android.hardware.input.VirtualStylusMotionEvent); } - @FlaggedApi("android.companion.virtual.flags.virtual_stylus") public final class VirtualStylusButtonEvent implements android.os.Parcelable { + public final class VirtualStylusButtonEvent implements android.os.Parcelable { method public int describeContents(); method public int getAction(); method public int getButtonCode(); @@ -5989,7 +5989,7 @@ package android.hardware.input { field @NonNull public static final android.os.Parcelable.Creator<android.hardware.input.VirtualStylusButtonEvent> CREATOR; } - @FlaggedApi("android.companion.virtual.flags.virtual_stylus") public static final class VirtualStylusButtonEvent.Builder { + public static final class VirtualStylusButtonEvent.Builder { ctor public VirtualStylusButtonEvent.Builder(); method @NonNull public android.hardware.input.VirtualStylusButtonEvent build(); method @NonNull public android.hardware.input.VirtualStylusButtonEvent.Builder setAction(int); @@ -5997,7 +5997,7 @@ package android.hardware.input { method @NonNull public android.hardware.input.VirtualStylusButtonEvent.Builder setEventTimeNanos(long); } - @FlaggedApi("android.companion.virtual.flags.virtual_stylus") public final class VirtualStylusConfig extends android.hardware.input.VirtualInputDeviceConfig implements android.os.Parcelable { + public final class VirtualStylusConfig extends android.hardware.input.VirtualInputDeviceConfig implements android.os.Parcelable { method public int describeContents(); method public int getHeight(); method public int getWidth(); @@ -6005,12 +6005,12 @@ package android.hardware.input { field @NonNull public static final android.os.Parcelable.Creator<android.hardware.input.VirtualStylusConfig> CREATOR; } - @FlaggedApi("android.companion.virtual.flags.virtual_stylus") public static final class VirtualStylusConfig.Builder extends android.hardware.input.VirtualInputDeviceConfig.Builder<android.hardware.input.VirtualStylusConfig.Builder> { + public static final class VirtualStylusConfig.Builder extends android.hardware.input.VirtualInputDeviceConfig.Builder<android.hardware.input.VirtualStylusConfig.Builder> { ctor public VirtualStylusConfig.Builder(@IntRange(from=1) int, @IntRange(from=1) int); method @NonNull public android.hardware.input.VirtualStylusConfig build(); } - @FlaggedApi("android.companion.virtual.flags.virtual_stylus") public final class VirtualStylusMotionEvent implements android.os.Parcelable { + public final class VirtualStylusMotionEvent implements android.os.Parcelable { method public int describeContents(); method public int getAction(); method public long getEventTimeNanos(); @@ -6029,7 +6029,7 @@ package android.hardware.input { field public static final int TOOL_TYPE_STYLUS = 2; // 0x2 } - @FlaggedApi("android.companion.virtual.flags.virtual_stylus") public static final class VirtualStylusMotionEvent.Builder { + public static final class VirtualStylusMotionEvent.Builder { ctor public VirtualStylusMotionEvent.Builder(); method @NonNull public android.hardware.input.VirtualStylusMotionEvent build(); method @NonNull public android.hardware.input.VirtualStylusMotionEvent.Builder setAction(int); diff --git a/core/java/android/companion/virtual/VirtualDeviceInternal.java b/core/java/android/companion/virtual/VirtualDeviceInternal.java index 311e24ba6254..3ef78affb7a5 100644 --- a/core/java/android/companion/virtual/VirtualDeviceInternal.java +++ b/core/java/android/companion/virtual/VirtualDeviceInternal.java @@ -32,7 +32,6 @@ import android.companion.virtual.audio.VirtualAudioDevice; import android.companion.virtual.camera.VirtualCamera; import android.companion.virtual.camera.VirtualCameraConfig; import android.companion.virtual.sensor.VirtualSensor; -import android.companion.virtualdevice.flags.Flags; import android.content.ComponentName; import android.content.Context; import android.content.Intent; @@ -473,14 +472,12 @@ public class VirtualDeviceInternal { @Nullable VirtualAudioDevice.AudioConfigurationChangeCallback callback) { if (mVirtualAudioDevice == null) { try { - Context context = mContext; - if (Flags.deviceAwareRecordAudioPermission()) { - // When using a default policy for audio device-aware RECORD_AUDIO permission - // should not take effect, thus register policies with the default context. - if (mVirtualDevice.getDevicePolicy(POLICY_TYPE_AUDIO) == DEVICE_POLICY_CUSTOM) { - context = mContext.createDeviceContext(getDeviceId()); - } - } + // When using a default policy for audio, the device-aware RECORD_AUDIO permission + // should not take effect, thus register policies with the default context. + final Context context = + mVirtualDevice.getDevicePolicy(POLICY_TYPE_AUDIO) == DEVICE_POLICY_CUSTOM + ? mContext.createDeviceContext(getDeviceId()) + : mContext; mVirtualAudioDevice = new VirtualAudioDevice(context, mVirtualDevice, display, executor, callback, () -> mVirtualAudioDevice = null); } catch (RemoteException e) { diff --git a/core/java/android/companion/virtual/VirtualDeviceManager.java b/core/java/android/companion/virtual/VirtualDeviceManager.java index 73ea9f0462d5..91ea673ab6f9 100644 --- a/core/java/android/companion/virtual/VirtualDeviceManager.java +++ b/core/java/android/companion/virtual/VirtualDeviceManager.java @@ -170,7 +170,6 @@ public final class VirtualDeviceManager { * @hide */ @SystemApi - @FlaggedApi(Flags.FLAG_PERSISTENT_DEVICE_ID_API) public static final String PERSISTENT_DEVICE_ID_DEFAULT = "default:" + Context.DEVICE_ID_DEFAULT; @@ -393,7 +392,6 @@ public final class VirtualDeviceManager { * @hide */ // TODO(b/315481938): Link @see VirtualDevice#getPersistentDeviceId() - @FlaggedApi(Flags.FLAG_PERSISTENT_DEVICE_ID_API) @SystemApi @Nullable public CharSequence getDisplayNameForPersistentDeviceId(@NonNull String persistentDeviceId) { @@ -416,7 +414,6 @@ public final class VirtualDeviceManager { * @hide */ // TODO(b/315481938): Link @see VirtualDevice#getPersistentDeviceId() - @FlaggedApi(Flags.FLAG_PERSISTENT_DEVICE_ID_API) @SystemApi @NonNull public Set<String> getAllPersistentDeviceIds() { @@ -780,7 +777,6 @@ public final class VirtualDeviceManager { * @see VirtualDeviceParams#POLICY_TYPE_RECENTS * @see VirtualDeviceParams#POLICY_TYPE_ACTIVITY */ - @FlaggedApi(Flags.FLAG_DYNAMIC_POLICY) public void setDevicePolicy(@VirtualDeviceParams.DynamicPolicyType int policyType, @VirtualDeviceParams.DevicePolicy int devicePolicy) { mVirtualDeviceInternal.setDevicePolicy(policyType, devicePolicy); @@ -802,7 +798,6 @@ public final class VirtualDeviceManager { * @see #removeActivityPolicyExemption(ComponentName) * @see #setDevicePolicy */ - @FlaggedApi(Flags.FLAG_DYNAMIC_POLICY) public void addActivityPolicyExemption(@NonNull ComponentName componentName) { addActivityPolicyExemption(new ActivityPolicyExemption.Builder() .setComponentName(componentName) @@ -825,7 +820,6 @@ public final class VirtualDeviceManager { * @see #addActivityPolicyExemption(ComponentName) * @see #setDevicePolicy */ - @FlaggedApi(Flags.FLAG_DYNAMIC_POLICY) public void removeActivityPolicyExemption(@NonNull ComponentName componentName) { removeActivityPolicyExemption(new ActivityPolicyExemption.Builder() .setComponentName(componentName) @@ -1037,9 +1031,7 @@ public final class VirtualDeviceManager { * @param config the touchscreen configurations for the virtual stylus. */ @NonNull - @FlaggedApi(Flags.FLAG_VIRTUAL_STYLUS) - public VirtualStylus createVirtualStylus( - @NonNull VirtualStylusConfig config) { + public VirtualStylus createVirtualStylus(@NonNull VirtualStylusConfig config) { return mVirtualDeviceInternal.createVirtualStylus(config); } diff --git a/core/java/android/companion/virtual/VirtualDeviceParams.java b/core/java/android/companion/virtual/VirtualDeviceParams.java index 2be27dabcf90..2fcb8fadc886 100644 --- a/core/java/android/companion/virtual/VirtualDeviceParams.java +++ b/core/java/android/companion/virtual/VirtualDeviceParams.java @@ -248,7 +248,6 @@ public final class VirtualDeviceParams implements Parcelable { */ // TODO(b/333443509): Update the documentation of custom policy and link to the new policy // POLICY_TYPE_BLOCKED_ACTIVITY - @FlaggedApi(Flags.FLAG_DYNAMIC_POLICY) public static final int POLICY_TYPE_ACTIVITY = 3; /** @@ -264,7 +263,6 @@ public final class VirtualDeviceParams implements Parcelable { * * @see android.hardware.display.DisplayManager#VIRTUAL_DISPLAY_FLAG_TRUSTED */ - @FlaggedApi(Flags.FLAG_CROSS_DEVICE_CLIPBOARD) public static final int POLICY_TYPE_CLIPBOARD = 4; /** @@ -1282,33 +1280,31 @@ public final class VirtualDeviceParams implements Parcelable { mVirtualSensorDirectChannelCallback); } - if (Flags.dynamicPolicy()) { - switch (mDevicePolicies.get(POLICY_TYPE_ACTIVITY, -1)) { - case DEVICE_POLICY_DEFAULT: - if (mDefaultActivityPolicyConfigured - && mDefaultActivityPolicy == ACTIVITY_POLICY_DEFAULT_BLOCKED) { - throw new IllegalArgumentException( - "DEVICE_POLICY_DEFAULT is explicitly configured for " - + "POLICY_TYPE_ACTIVITY, which is exclusive with " - + "setAllowedActivities."); - } - break; - case DEVICE_POLICY_CUSTOM: - if (mDefaultActivityPolicyConfigured - && mDefaultActivityPolicy == ACTIVITY_POLICY_DEFAULT_ALLOWED) { - throw new IllegalArgumentException( - "DEVICE_POLICY_CUSTOM is explicitly configured for " - + "POLICY_TYPE_ACTIVITY, which is exclusive with " - + "setBlockedActivities."); - } - break; - default: - if (mDefaultActivityPolicyConfigured - && mDefaultActivityPolicy == ACTIVITY_POLICY_DEFAULT_BLOCKED) { - mDevicePolicies.put(POLICY_TYPE_ACTIVITY, DEVICE_POLICY_CUSTOM); - } - break; - } + switch (mDevicePolicies.get(POLICY_TYPE_ACTIVITY, -1)) { + case DEVICE_POLICY_DEFAULT: + if (mDefaultActivityPolicyConfigured + && mDefaultActivityPolicy == ACTIVITY_POLICY_DEFAULT_BLOCKED) { + throw new IllegalArgumentException( + "DEVICE_POLICY_DEFAULT is explicitly configured for " + + "POLICY_TYPE_ACTIVITY, which is exclusive with " + + "setAllowedActivities."); + } + break; + case DEVICE_POLICY_CUSTOM: + if (mDefaultActivityPolicyConfigured + && mDefaultActivityPolicy == ACTIVITY_POLICY_DEFAULT_ALLOWED) { + throw new IllegalArgumentException( + "DEVICE_POLICY_CUSTOM is explicitly configured for " + + "POLICY_TYPE_ACTIVITY, which is exclusive with " + + "setBlockedActivities."); + } + break; + default: + if (mDefaultActivityPolicyConfigured + && mDefaultActivityPolicy == ACTIVITY_POLICY_DEFAULT_BLOCKED) { + mDevicePolicies.put(POLICY_TYPE_ACTIVITY, DEVICE_POLICY_CUSTOM); + } + break; } if (mDimDuration.compareTo(mScreenOffTimeout) > 0) { @@ -1319,10 +1315,6 @@ public final class VirtualDeviceParams implements Parcelable { mScreenOffTimeout = INFINITE_TIMEOUT; } - if (!Flags.crossDeviceClipboard()) { - mDevicePolicies.delete(POLICY_TYPE_CLIPBOARD); - } - if (!Flags.virtualCamera()) { mDevicePolicies.delete(POLICY_TYPE_CAMERA); } diff --git a/core/java/android/companion/virtual/flags/flags.aconfig b/core/java/android/companion/virtual/flags/flags.aconfig index 84af84072f1b..6da2a073ec19 100644 --- a/core/java/android/companion/virtual/flags/flags.aconfig +++ b/core/java/android/companion/virtual/flags/flags.aconfig @@ -19,14 +19,6 @@ flag { flag { namespace: "virtual_devices" - name: "device_aware_record_audio_permission" - description: "Enable device-aware RECORD_AUDIO permission" - bug: "291737188" - is_fixed_read_only: true -} - -flag { - namespace: "virtual_devices" name: "media_projection_keyguard_restrictions" description: "Auto-stop MP when the device locks" bug: "348335290" diff --git a/core/java/android/hardware/input/VirtualStylus.java b/core/java/android/hardware/input/VirtualStylus.java index 4b79bc482c7b..32aac2efb3c1 100644 --- a/core/java/android/hardware/input/VirtualStylus.java +++ b/core/java/android/hardware/input/VirtualStylus.java @@ -16,11 +16,9 @@ package android.hardware.input; -import android.annotation.FlaggedApi; import android.annotation.NonNull; import android.annotation.SystemApi; import android.companion.virtual.IVirtualDevice; -import android.companion.virtual.flags.Flags; import android.os.IBinder; import android.os.RemoteException; import android.util.Log; @@ -34,7 +32,6 @@ import android.util.Log; * * @hide */ -@FlaggedApi(Flags.FLAG_VIRTUAL_STYLUS) @SystemApi public class VirtualStylus extends VirtualInputDevice { /** @hide */ diff --git a/core/java/android/hardware/input/VirtualStylusButtonEvent.java b/core/java/android/hardware/input/VirtualStylusButtonEvent.java index 8fcf561bedcd..9fe725a627b4 100644 --- a/core/java/android/hardware/input/VirtualStylusButtonEvent.java +++ b/core/java/android/hardware/input/VirtualStylusButtonEvent.java @@ -16,11 +16,9 @@ package android.hardware.input; -import android.annotation.FlaggedApi; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.SystemApi; -import android.companion.virtual.flags.Flags; import android.os.Parcel; import android.os.Parcelable; import android.os.SystemClock; @@ -35,7 +33,6 @@ import java.lang.annotation.RetentionPolicy; * * @hide */ -@FlaggedApi(Flags.FLAG_VIRTUAL_STYLUS) @SystemApi public final class VirtualStylusButtonEvent implements Parcelable { /** @hide */ @@ -128,7 +125,6 @@ public final class VirtualStylusButtonEvent implements Parcelable { /** * Builder for {@link VirtualStylusButtonEvent}. */ - @FlaggedApi(Flags.FLAG_VIRTUAL_STYLUS) public static final class Builder { @Action diff --git a/core/java/android/hardware/input/VirtualStylusConfig.java b/core/java/android/hardware/input/VirtualStylusConfig.java index 64cf1f56d8bc..3c56023fa6d3 100644 --- a/core/java/android/hardware/input/VirtualStylusConfig.java +++ b/core/java/android/hardware/input/VirtualStylusConfig.java @@ -16,11 +16,9 @@ package android.hardware.input; -import android.annotation.FlaggedApi; import android.annotation.IntRange; import android.annotation.NonNull; import android.annotation.SystemApi; -import android.companion.virtual.flags.Flags; import android.os.Parcel; import android.os.Parcelable; @@ -29,7 +27,6 @@ import android.os.Parcelable; * * @hide */ -@FlaggedApi(Flags.FLAG_VIRTUAL_STYLUS) @SystemApi public final class VirtualStylusConfig extends VirtualTouchDeviceConfig implements Parcelable { @@ -68,7 +65,6 @@ public final class VirtualStylusConfig extends VirtualTouchDeviceConfig implemen /** * Builder for creating a {@link VirtualStylusConfig}. */ - @FlaggedApi(Flags.FLAG_VIRTUAL_STYLUS) public static final class Builder extends VirtualTouchDeviceConfig.Builder<Builder> { /** diff --git a/core/java/android/hardware/input/VirtualStylusMotionEvent.java b/core/java/android/hardware/input/VirtualStylusMotionEvent.java index 0ac6f3aa3e15..fa0ff4f7eeab 100644 --- a/core/java/android/hardware/input/VirtualStylusMotionEvent.java +++ b/core/java/android/hardware/input/VirtualStylusMotionEvent.java @@ -16,12 +16,10 @@ package android.hardware.input; -import android.annotation.FlaggedApi; import android.annotation.IntDef; import android.annotation.IntRange; import android.annotation.NonNull; import android.annotation.SystemApi; -import android.companion.virtual.flags.Flags; import android.os.Parcel; import android.os.Parcelable; import android.os.SystemClock; @@ -38,7 +36,6 @@ import java.lang.annotation.RetentionPolicy; * * @hide */ -@FlaggedApi(Flags.FLAG_VIRTUAL_STYLUS) @SystemApi public final class VirtualStylusMotionEvent implements Parcelable { private static final int TILT_MIN = -90; @@ -209,7 +206,6 @@ public final class VirtualStylusMotionEvent implements Parcelable { /** * Builder for {@link VirtualStylusMotionEvent}. */ - @FlaggedApi(Flags.FLAG_VIRTUAL_STYLUS) public static final class Builder { @ToolType 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 260ea75a1f4c..e58d20d65f1f 100644 --- a/services/companion/java/com/android/server/companion/virtual/VirtualDeviceImpl.java +++ b/services/companion/java/com/android/server/companion/virtual/VirtualDeviceImpl.java @@ -21,7 +21,6 @@ import static android.Manifest.permission.ADD_TRUSTED_DISPLAY; import static android.app.admin.DevicePolicyManager.NEARBY_STREAMING_ENABLED; import static android.app.admin.DevicePolicyManager.NEARBY_STREAMING_NOT_CONTROLLED_BY_POLICY; import static android.app.admin.DevicePolicyManager.NEARBY_STREAMING_SAME_MANAGED_ACCOUNT_ONLY; -import static android.companion.virtual.VirtualDeviceParams.ACTIVITY_POLICY_DEFAULT_ALLOWED; import static android.companion.virtual.VirtualDeviceParams.DEVICE_POLICY_CUSTOM; import static android.companion.virtual.VirtualDeviceParams.DEVICE_POLICY_DEFAULT; import static android.companion.virtual.VirtualDeviceParams.NAVIGATION_POLICY_DEFAULT_ALLOWED; @@ -492,17 +491,10 @@ final class VirtualDeviceImpl extends IVirtualDevice.Stub this, getDeviceId(), getPersistentDeviceId(), mParams.getName()); } - if (Flags.dynamicPolicy()) { - mActivityPolicyExemptions = new ArraySet<>( - mParams.getDevicePolicy(POLICY_TYPE_ACTIVITY) == DEVICE_POLICY_DEFAULT - ? mParams.getBlockedActivities() - : mParams.getAllowedActivities()); - } else { - mActivityPolicyExemptions = - mParams.getDefaultActivityPolicy() == ACTIVITY_POLICY_DEFAULT_ALLOWED - ? mParams.getBlockedActivities() - : mParams.getAllowedActivities(); - } + mActivityPolicyExemptions = new ArraySet<>( + mParams.getDevicePolicy(POLICY_TYPE_ACTIVITY) == DEVICE_POLICY_DEFAULT + ? mParams.getBlockedActivities() + : mParams.getAllowedActivities()); if (Flags.vdmCustomIme() && mParams.getInputMethodComponent() != null) { final String imeId = mParams.getInputMethodComponent().flattenToShortString(); @@ -587,12 +579,8 @@ final class VirtualDeviceImpl extends IVirtualDevice.Stub @Override // Binder call public @VirtualDeviceParams.DevicePolicy int getDevicePolicy( @VirtualDeviceParams.PolicyType int policyType) { - if (Flags.dynamicPolicy()) { - synchronized (mVirtualDeviceLock) { - return mDevicePolicies.get(policyType, DEVICE_POLICY_DEFAULT); - } - } else { - return mParams.getDevicePolicy(policyType); + synchronized (mVirtualDeviceLock) { + return mDevicePolicies.get(policyType, DEVICE_POLICY_DEFAULT); } } @@ -891,9 +879,6 @@ final class VirtualDeviceImpl extends IVirtualDevice.Stub public void setDevicePolicy(@VirtualDeviceParams.DynamicPolicyType int policyType, @VirtualDeviceParams.DevicePolicy int devicePolicy) { checkCallerIsDeviceOwner(); - if (!Flags.dynamicPolicy()) { - return; - } switch (policyType) { case POLICY_TYPE_RECENTS: @@ -924,23 +909,21 @@ final class VirtualDeviceImpl extends IVirtualDevice.Stub } break; case POLICY_TYPE_CLIPBOARD: - if (Flags.crossDeviceClipboard()) { - if (devicePolicy == DEVICE_POLICY_CUSTOM + if (devicePolicy == DEVICE_POLICY_CUSTOM && mContext.checkCallingOrSelfPermission(ADD_TRUSTED_DISPLAY) != PackageManager.PERMISSION_GRANTED) { - throw new SecurityException("Requires ADD_TRUSTED_DISPLAY permission to " - + "set a custom clipboard policy."); - } - synchronized (mVirtualDeviceLock) { - for (int i = 0; i < mVirtualDisplays.size(); i++) { - VirtualDisplayWrapper wrapper = mVirtualDisplays.valueAt(i); - if (!wrapper.isTrusted() && !wrapper.isMirror()) { - throw new SecurityException("All displays must be trusted for " - + "devices with custom clipboard policy."); - } + throw new SecurityException("Requires ADD_TRUSTED_DISPLAY permission to " + + "set a custom clipboard policy."); + } + synchronized (mVirtualDeviceLock) { + for (int i = 0; i < mVirtualDisplays.size(); i++) { + VirtualDisplayWrapper wrapper = mVirtualDisplays.valueAt(i); + if (!wrapper.isTrusted() && !wrapper.isMirror()) { + throw new SecurityException("All displays must be trusted for " + + "devices with custom clipboard policy."); } - mDevicePolicies.put(policyType, devicePolicy); } + mDevicePolicies.put(policyType, devicePolicy); } break; case POLICY_TYPE_BLOCKED_ACTIVITY: @@ -1443,9 +1426,7 @@ final class VirtualDeviceImpl extends IVirtualDevice.Stub private GenericWindowPolicyController createWindowPolicyControllerLocked( @NonNull Set<String> displayCategories) { final boolean activityLaunchAllowedByDefault = - Flags.dynamicPolicy() - ? getDevicePolicy(POLICY_TYPE_ACTIVITY) == DEVICE_POLICY_DEFAULT - : mParams.getDefaultActivityPolicy() == ACTIVITY_POLICY_DEFAULT_ALLOWED; + getDevicePolicy(POLICY_TYPE_ACTIVITY) == DEVICE_POLICY_DEFAULT; final boolean crossTaskNavigationAllowedByDefault = mParams.getDefaultNavigationPolicy() == NAVIGATION_POLICY_DEFAULT_ALLOWED; final boolean showTasksInHostDeviceRecents = diff --git a/services/companion/java/com/android/server/companion/virtual/VirtualDeviceManagerService.java b/services/companion/java/com/android/server/companion/virtual/VirtualDeviceManagerService.java index 40726b4331e2..a60fa693350c 100644 --- a/services/companion/java/com/android/server/companion/virtual/VirtualDeviceManagerService.java +++ b/services/companion/java/com/android/server/companion/virtual/VirtualDeviceManagerService.java @@ -216,17 +216,14 @@ public class VirtualDeviceManagerService extends SystemService { VIRTUAL_DEVICE_SERVICE_ORDERED_ID, mActivityInterceptorCallback); - if (Flags.persistentDeviceIdApi()) { - CompanionDeviceManager cdm = - getContext().getSystemService(CompanionDeviceManager.class); - if (cdm != null) { - onCdmAssociationsChanged(cdm.getAllAssociations(UserHandle.USER_ALL)); - cdm.addOnAssociationsChangedListener(getContext().getMainExecutor(), - this::onCdmAssociationsChanged, UserHandle.USER_ALL); - } else { - Slog.e(TAG, "Failed to find CompanionDeviceManager. No CDM association info " - + " will be available."); - } + CompanionDeviceManager cdm = getContext().getSystemService(CompanionDeviceManager.class); + if (cdm != null) { + onCdmAssociationsChanged(cdm.getAllAssociations(UserHandle.USER_ALL)); + cdm.addOnAssociationsChangedListener(getContext().getMainExecutor(), + this::onCdmAssociationsChanged, UserHandle.USER_ALL); + } else { + Slog.e(TAG, "Failed to find CompanionDeviceManager. No CDM association info " + + " will be available."); } if (android.companion.virtualdevice.flags.Flags.deviceAwareDisplayPower()) { mStrongAuthTracker = new StrongAuthTracker(getContext()); @@ -338,14 +335,6 @@ public class VirtualDeviceManagerService extends SystemService { final long identity = Binder.clearCallingIdentity(); try { getContext().sendBroadcastAsUser(i, UserHandle.ALL); - - if (!Flags.persistentDeviceIdApi()) { - synchronized (mVirtualDeviceManagerLock) { - if (mVirtualDevices.size() == 0) { - unregisterCdmAssociationListener(); - } - } - } } finally { Binder.restoreCallingIdentity(identity); } @@ -379,21 +368,6 @@ public class VirtualDeviceManagerService extends SystemService { } } - @RequiresPermission(android.Manifest.permission.MANAGE_COMPANION_DEVICES) - private void registerCdmAssociationListener() { - final CompanionDeviceManager cdm = getContext().getSystemService( - CompanionDeviceManager.class); - cdm.addOnAssociationsChangedListener(getContext().getMainExecutor(), - mCdmAssociationListener); - } - - @RequiresPermission(android.Manifest.permission.MANAGE_COMPANION_DEVICES) - private void unregisterCdmAssociationListener() { - final CompanionDeviceManager cdm = getContext().getSystemService( - CompanionDeviceManager.class); - cdm.removeOnAssociationsChangedListener(mCdmAssociationListener); - } - void onCdmAssociationsChanged(List<AssociationInfo> associations) { ArrayMap<String, AssociationInfo> vdmAssociations = new ArrayMap<>(); for (int i = 0; i < associations.size(); ++i) { @@ -479,9 +453,8 @@ public class VirtualDeviceManagerService extends SystemService { AssociationInfo associationInfo = getAssociationInfo(packageName, associationId); if (associationInfo == null) { throw new IllegalArgumentException("No association with ID " + associationId); - } else if (!VIRTUAL_DEVICE_COMPANION_DEVICE_PROFILES - .contains(associationInfo.getDeviceProfile()) - && Flags.persistentDeviceIdApi()) { + } else if (!VIRTUAL_DEVICE_COMPANION_DEVICE_PROFILES.contains( + associationInfo.getDeviceProfile())) { throw new IllegalArgumentException("Unsupported CDM Association device profile " + associationInfo.getDeviceProfile() + " for virtual device creation."); } @@ -522,14 +495,6 @@ public class VirtualDeviceManagerService extends SystemService { Counter.logIncrement("virtual_devices.value_virtual_devices_created_count"); synchronized (mVirtualDeviceManagerLock) { - if (!Flags.persistentDeviceIdApi() && mVirtualDevices.size() == 0) { - final long callingId = Binder.clearCallingIdentity(); - try { - registerCdmAssociationListener(); - } finally { - Binder.restoreCallingIdentity(callingId); - } - } mVirtualDevices.put(deviceId, virtualDevice); } |