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

Commit 94506d40 authored by Nikolas Havrikov's avatar Nikolas Havrikov
Browse files

Enable preventing IME startup for non-edit views

This CL introduces the config_preventImeStartupUnlessTextEditor
configuration option, which is disabled by default.
When enabled, this prevents the IMMS from triggering an onStartInput
unless the window receiving focus contains a text editor element
or IME startup was explicitly requested by the client app.

Bug: 199887357
Bug: 37617707
Test: set the config option to true in an overlay
Test: manually on adt3 and another android tv device
Test: atest CtsInputMethodTestCases
Change-Id: Iacb29cfdb3825248ee8c40e610652f697aa2d6da
parent 6560e43b
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -59,6 +59,7 @@ package android {
  public static final class R.bool {
    field public static final int config_assistantOnTopOfDream = 17891333; // 0x1110005
    field public static final int config_perDisplayFocusEnabled = 17891332; // 0x1110004
    field public static final int config_preventImeStartupUnlessTextEditor;
    field public static final int config_remoteInsetsControllerControlsSystemBars = 17891334; // 0x1110006
  }

+4 −0
Original line number Diff line number Diff line
@@ -2897,6 +2897,10 @@
    <!-- Make the IME killable by the lowmemorykiller by raising its oom_score_adj. -->
    <bool name="config_killableInputMethods">false</bool>

    <!-- Prevent the InputMethodManagerService from starting up the IME unless
     the currently focused view is a text editor. -->
    <bool name="config_preventImeStartupUnlessTextEditor">false</bool>

    <!-- The list of classes that should be added to the notification ranking pipeline.
     See {@link com.android.server.notification.NotificationSignalExtractor}
      If you add a new extractor to this list make sure to update
+2 −0
Original line number Diff line number Diff line
@@ -3311,6 +3311,8 @@
  <staging-public-group type="bool" first-id="0x01cf0000">
    <!-- @hide @SystemApi -->
    <public name="config_systemCaptionsServiceCallsEnabled" />
    <!-- @hide @TestApi -->
    <public name="config_preventImeStartupUnlessTextEditor" />
  </staging-public-group>

  <staging-public-group type="fraction" first-id="0x01ce0000">
+1 −0
Original line number Diff line number Diff line
@@ -2250,6 +2250,7 @@
  <java-symbol type="bool" name="config_autoResetAirplaneMode" />
  <java-symbol type="string" name="config_notificationAccessConfirmationActivity" />
  <java-symbol type="bool" name="config_killableInputMethods" />
  <java-symbol type="bool" name="config_preventImeStartupUnlessTextEditor" />

  <java-symbol type="layout" name="resolver_list" />
  <java-symbol type="id" name="resolver_list" />
+10 −1
Original line number Diff line number Diff line
@@ -496,8 +496,17 @@ final class InputMethodBindingController {
            return;
        }

        // No IME is currently connected. Reestablish the main connection.
        if (!mHasConnection) {
            if (DEBUG) {
                Slog.d(TAG, "Cannot show input: no IME bound. Rebinding.");
            }
            bindCurrentMethodLocked();
            return;
        }

        long bindingDuration = SystemClock.uptimeMillis() - mLastBindTime;
        if (mHasConnection && bindingDuration >= TIME_TO_RECONNECT) {
        if (bindingDuration >= TIME_TO_RECONNECT) {
            // The client has asked to have the input method shown, but
            // we have been sitting here too long with a connection to the
            // service and no interface received, so let's disconnect/connect
Loading