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

Commit 3621ebaa authored by Vladimir Komsiyski's avatar Vladimir Komsiyski Committed by Android (Google) Code Review
Browse files

Merge "Fix VDM IME handling:" into main

parents f23d375e d1a6be1b
Loading
Loading
Loading
Loading
+29 −1
Original line number Diff line number Diff line
@@ -3185,6 +3185,24 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub
                }
            }
        }

        if (mDeviceIdToShowIme == DEVICE_ID_DEFAULT) {
            String ime = SecureSettingsWrapper.getString(
                    Settings.Secure.DEFAULT_INPUT_METHOD, null, mSettings.getUserId());
            String defaultDeviceIme = SecureSettingsWrapper.getString(
                    Settings.Secure.DEFAULT_DEVICE_INPUT_METHOD, null, mSettings.getUserId());
            if (defaultDeviceIme != null && !Objects.equals(ime, defaultDeviceIme)) {
                if (DEBUG) {
                    Slog.v(TAG, "Current input method " + ime + " differs from the stored default"
                            + " device input method for user " + mSettings.getUserId()
                            + " - restoring " + defaultDeviceIme);
                }
                SecureSettingsWrapper.putString(
                        Settings.Secure.DEFAULT_INPUT_METHOD, defaultDeviceIme,
                        mSettings.getUserId());
            }
        }

        // We are assuming that whoever is changing DEFAULT_INPUT_METHOD and
        // ENABLED_INPUT_METHODS is taking care of keeping them correctly in
        // sync, so we will never have a DEFAULT_INPUT_METHOD that is not
@@ -5366,7 +5384,11 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub

        if (!setSubtypeOnly) {
            // Set InputMethod here
            mSettings.putSelectedInputMethod(imi != null ? imi.getId() : "");
            final String imeId = imi != null ? imi.getId() : "";
            mSettings.putSelectedInputMethod(imeId);
            if (mDeviceIdToShowIme == DEVICE_ID_DEFAULT) {
                mSettings.putSelectedDefaultDeviceInputMethod(imeId);
            }
        }
    }

@@ -5509,6 +5531,9 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub
            return false; // IME is not found or not enabled.
        }
        settings.putSelectedInputMethod(imeId);
        if (mDeviceIdToShowIme == DEVICE_ID_DEFAULT) {
            settings.putSelectedDefaultDeviceInputMethod(imeId);
        }
        settings.putSelectedSubtype(NOT_A_SUBTYPE_ID);
        return true;
    }
@@ -6555,6 +6580,9 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub

                        // Reset selected IME.
                        settings.putSelectedInputMethod(nextIme);
                        if (mDeviceIdToShowIme == DEVICE_ID_DEFAULT) {
                            settings.putSelectedDefaultDeviceInputMethod(nextIme);
                        }
                        settings.putSelectedSubtype(NOT_A_SUBTYPE_ID);
                    }
                    out.println("Reset current and enabled IMEs for user #" + userId);
+0 −7
Original line number Diff line number Diff line
@@ -36,7 +36,6 @@ import com.android.internal.annotations.VisibleForTesting;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.function.Predicate;

/**
@@ -88,12 +87,6 @@ final class InputMethodSettings {
        mMethodMap = methodMap;
        mMethodList = methodMap.values();
        mUserId = userId;
        String ime = getSelectedInputMethod();
        String defaultDeviceIme = getSelectedDefaultDeviceInputMethod();
        if (defaultDeviceIme != null && !Objects.equals(ime, defaultDeviceIme)) {
            putSelectedInputMethod(defaultDeviceIme);
            putSelectedDefaultDeviceInputMethod(null);
        }
    }

    @AnyThread