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

Commit 4c871ccc authored by Vladimir Komsiyski's avatar Vladimir Komsiyski
Browse files

VDM IME 4/n: Allow for changing the IME policy.

Bug: 287269288
Test: CTS
Change-Id: I53d5ebcfba026aef86e70a0db6ff931754f5741c
parent 1b5e0a7b
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -3232,6 +3232,7 @@ package android.companion.virtual {
    method @FlaggedApi("android.companion.virtual.flags.dynamic_policy") @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public void removeActivityPolicyExemption(@NonNull android.content.ComponentName);
    method public void removeSoundEffectListener(@NonNull android.companion.virtual.VirtualDeviceManager.SoundEffectListener);
    method @FlaggedApi("android.companion.virtual.flags.dynamic_policy") @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public void setDevicePolicy(int, int);
    method @FlaggedApi("android.companion.virtual.flags.vdm_custom_ime") @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public void setDisplayImePolicy(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);
  }
@@ -17173,6 +17174,9 @@ package android.view {
    method @NonNull public default java.util.List<android.content.ComponentName> notifyScreenshotListeners(int);
    method public default void registerTaskFpsCallback(@IntRange(from=0) int, @NonNull java.util.concurrent.Executor, @NonNull android.window.TaskFpsCallback);
    method public default void unregisterTaskFpsCallback(@NonNull android.window.TaskFpsCallback);
    field public static final int DISPLAY_IME_POLICY_FALLBACK_DISPLAY = 1; // 0x1
    field public static final int DISPLAY_IME_POLICY_HIDE = 2; // 0x2
    field public static final int DISPLAY_IME_POLICY_LOCAL = 0; // 0x0
  }
  public static class WindowManager.LayoutParams extends android.view.ViewGroup.LayoutParams implements android.os.Parcelable {
+0 −3
Original line number Diff line number Diff line
@@ -3617,9 +3617,6 @@ package android.view {
    method public default void setShouldShowWithInsecureKeyguard(int, boolean);
    method public default boolean shouldShowSystemDecors(int);
    method @Nullable public default android.graphics.Bitmap snapshotTaskForRecents(@IntRange(from=0) int);
    field public static final int DISPLAY_IME_POLICY_FALLBACK_DISPLAY = 1; // 0x1
    field public static final int DISPLAY_IME_POLICY_HIDE = 2; // 0x2
    field public static final int DISPLAY_IME_POLICY_LOCAL = 0; // 0x0
    field public static final int LARGE_SCREEN_SMALLEST_SCREEN_WIDTH_DP = 600; // 0x258
  }

+4 −0
Original line number Diff line number Diff line
@@ -219,6 +219,10 @@ interface IVirtualDevice {
    @EnforcePermission("CREATE_VIRTUAL_DEVICE")
    void setShowPointerIcon(boolean showPointerIcon);

    /** Sets an IME policy for the given display. */
    @EnforcePermission("CREATE_VIRTUAL_DEVICE")
    void setDisplayImePolicy(int displayId, int policy);

    /**
     * Registers an intent interceptor that will intercept an intent attempting to launch
     * when matching the provided IntentFilter and calls the callback with the intercepted
+9 −0
Original line number Diff line number Diff line
@@ -53,6 +53,7 @@ import android.os.Looper;
import android.os.RemoteException;
import android.os.ResultReceiver;
import android.util.ArrayMap;
import android.view.WindowManager;

import com.android.internal.annotations.GuardedBy;

@@ -361,6 +362,14 @@ public class VirtualDeviceInternal {
        }
    }

    void setDisplayImePolicy(int displayId, @WindowManager.DisplayImePolicy int policy) {
        try {
            mVirtualDevice.setDisplayImePolicy(displayId, policy);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

    void addActivityListener(
            @CallbackExecutor @NonNull Executor executor,
            @NonNull VirtualDeviceManager.ActivityListener listener) {
+19 −0
Original line number Diff line number Diff line
@@ -63,6 +63,7 @@ import android.os.Looper;
import android.os.RemoteException;
import android.util.Log;
import android.view.Surface;
import android.view.WindowManager;

import com.android.internal.annotations.GuardedBy;

@@ -913,6 +914,24 @@ public final class VirtualDeviceManager {
            mVirtualDeviceInternal.setShowPointerIcon(showPointerIcon);
        }

        /**
         * Specifies the IME behavior on the given display. By default, all displays created by
         * virtual devices have {@link WindowManager#DISPLAY_IME_POLICY_LOCAL}.
         *
         * @param displayId the ID of the display to change the IME policy for. It must be owned by
         *                  this virtual device.
         * @param policy the IME policy to use on that display
         * @throws SecurityException if the display is not owned by this device or is not
         *                           {@link DisplayManager#VIRTUAL_DISPLAY_FLAG_TRUSTED trusted}
         */
        @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE)
        @FlaggedApi(Flags.FLAG_VDM_CUSTOM_IME)
        public void setDisplayImePolicy(int displayId, @WindowManager.DisplayImePolicy int policy) {
            if (Flags.vdmCustomIme()) {
                mVirtualDeviceInternal.setDisplayImePolicy(displayId, policy);
            }
        }

        /**
         * Adds an activity listener to listen for events such as top activity change or virtual
         * display task stack became empty.
Loading