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

Commit 8cbc4206 authored by Nikolas Havrikov's avatar Nikolas Havrikov
Browse files

Delete config_killableInputMethods setting

This change effectively reverts the introduction of the
config_killableInputMethods setting in [1]. Permanently setting the
oom_score_adj of the IME process to CACHED leads to cases where the
lowmemorykiller kills it before it can be raised to "visible". In
order to achieve the killable IME behavior, enabling the setting
config_preventImeStartupUnlessTextEditor is sufficient.

Test: atest CtsInputMethodTestCases
Test: also manually on adt3
Bug: 232511947
[1]: Ib191d964de15bbb84daa8bbeca6f2dca6f96311c

Change-Id: I92091e0e1c26635b8fc38f1371445a17a0afafae
parent 53058521
Loading
Loading
Loading
Loading
+0 −3
Original line number Diff line number Diff line
@@ -2963,9 +2963,6 @@
        <item>com.android.inputmethod.latin</item>
    </string-array>

    <!-- 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>
+0 −1
Original line number Diff line number Diff line
@@ -2254,7 +2254,6 @@
  <java-symbol type="bool" name="config_supportTelephonyTimeZoneFallback" />
  <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="array" name="config_nonPreemptibleInputMethods" />
  <java-symbol type="bool" name="config_enhancedConfirmationModeEnabled" />
+1 −30
Original line number Diff line number Diff line
@@ -90,13 +90,6 @@ final class InputMethodBindingController {
                    | Context.BIND_NOT_VISIBLE
                    | Context.BIND_NOT_FOREGROUND
                    | Context.BIND_IMPORTANT_BACKGROUND;
    /**
     * Binding flags for establishing connection to the {@link InputMethodService} when
     * config_killableInputMethods is enabled.
     */
    private static final int IME_CONNECTION_LOW_PRIORITY_BIND_FLAGS =
            Context.BIND_AUTO_CREATE
                    | Context.BIND_REDUCTION_FLAGS;
    /**
     * Binding flags used only while the {@link InputMethodService} is showing window.
     */
@@ -108,16 +101,6 @@ final class InputMethodBindingController {
                    | Context.BIND_SHOWING_UI
                    | Context.BIND_SCHEDULE_LIKE_TOP_APP;

    /**
     * Binding flags for establishing connection to the {@link InputMethodService}.
     *
     * <p>
     * This defaults to {@link InputMethodBindingController#IME_CONNECTION_BIND_FLAGS} unless
     * config_killableInputMethods is enabled, in which case this takes the value of
     * {@link InputMethodBindingController#IME_CONNECTION_LOW_PRIORITY_BIND_FLAGS}.
     */
    private final int mImeConnectionBindFlags;

    InputMethodBindingController(@NonNull InputMethodManagerService service) {
        mService = service;
        mContext = mService.mContext;
@@ -127,17 +110,6 @@ final class InputMethodBindingController {
        mIWindowManager = mService.mIWindowManager;
        mWindowManagerInternal = mService.mWindowManagerInternal;
        mRes = mService.mRes;

        // If configured, use low priority flags to make the IME killable by the lowmemorykiller
        final boolean lowerIMEPriority = mRes.getBoolean(
                com.android.internal.R.bool.config_killableInputMethods);

        if (lowerIMEPriority) {
            mImeConnectionBindFlags =
                    InputMethodBindingController.IME_CONNECTION_LOW_PRIORITY_BIND_FLAGS;
        } else {
            mImeConnectionBindFlags = InputMethodBindingController.IME_CONNECTION_BIND_FLAGS;
        }
    }

    /**
@@ -500,8 +472,7 @@ final class InputMethodBindingController {

    @GuardedBy("ImfLock.class")
    private boolean bindCurrentInputMethodServiceMainConnection() {
        mHasConnection = bindCurrentInputMethodService(mMainConnection,
                mImeConnectionBindFlags);
        mHasConnection = bindCurrentInputMethodService(mMainConnection, IME_CONNECTION_BIND_FLAGS);
        return mHasConnection;
    }