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

Commit 0eae6536 authored by Felix Stern's avatar Felix Stern
Browse files

Removed lock of showInputMethodMenu when showing the dialog

Test: manual test
Fix: 275450371
Change-Id: If3ac82cab288258331d48fc72903d4013c19cc68
parent 11fe4355
Loading
Loading
Loading
Loading
+6 −7
Original line number Diff line number Diff line
@@ -19,7 +19,6 @@ package com.android.server.inputmethod;
import static com.android.server.inputmethod.InputMethodManagerService.DEBUG;
import static com.android.server.inputmethod.InputMethodUtils.NOT_A_SUBTYPE_ID;

import android.annotation.Nullable;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
@@ -66,8 +65,8 @@ final class InputMethodMenuController {
    private boolean mShowImeWithHardKeyboard;

    @GuardedBy("ImfLock.class")
    @Nullable
    private InputMethodDialogWindowContext mDialogWindowContext;
    private final InputMethodDialogWindowContext mDialogWindowContext =
            new InputMethodDialogWindowContext();

    InputMethodMenuController(InputMethodManagerService service) {
        mService = service;
@@ -125,13 +124,11 @@ final class InputMethodMenuController {
                }
            }

            if (mDialogWindowContext == null) {
                mDialogWindowContext = new InputMethodDialogWindowContext();
            }
            final Context dialogWindowContext = mDialogWindowContext.get(displayId);
            mDialogBuilder = new AlertDialog.Builder(dialogWindowContext);
            mDialogBuilder.setOnCancelListener(dialog -> hideInputMethodMenu());

            // TODO(b/277061090): refactor UI components should not be created while holding a lock.
            final Context dialogContext = mDialogBuilder.getContext();
            final TypedArray a = dialogContext.obtainStyledAttributes(null,
                    com.android.internal.R.styleable.DialogPreference,
@@ -199,10 +196,11 @@ final class InputMethodMenuController {
            attrs.privateFlags |= WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS;
            attrs.setTitle("Select input method");
            w.setAttributes(attrs);
            // TODO(b/277062834) decouple/remove dependency on IMMS
            mService.updateSystemUiLocked();
            mService.sendOnNavButtonFlagsChangedLocked();
            mSwitchingDialog.show();
        }
        mSwitchingDialog.show();
    }

    private boolean isScreenLocked() {
@@ -276,6 +274,7 @@ final class InputMethodMenuController {
        private final int mTextViewResourceId;
        private final List<ImeSubtypeListItem> mItemsList;
        public int mCheckedItem;

        private ImeSubtypeListAdapter(Context context, int textViewResourceId,
                List<ImeSubtypeListItem> itemsList, int checkedItem) {
            super(context, textViewResourceId, itemsList);