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

Commit 9f172540 authored by Yohei Yukawa's avatar Yohei Yukawa
Browse files

Remove the dependency on InputMethodSettings

InputMethodUtils.InputMethodSetting is a quite complicated inernal
class of InputMethodUtils and PhysicalKeyboardFragment's depending on
it just for getting/setting SHOW_IME_WITH_HARD_KEYBOARD is overkill.

With this CL, PhysicalKeyboardFragment just uses Secure Settings APIs
directly.

There should be no user-visible behavior change.

Bug: 77730201
Test: Manually verified as follows:
 1. Open system settings.
 2. Tap "System" -> "Languages & input" -> "Physical keyboard"
 3. Make sure "Show virtual keyboard" is unchecked
 4. Make sure the following command shows 0
      adb shell settings get secure show_ime_with_hard_keyboard
 5. Check "Show virtual keyboard"
 6. Make sure the following command shows 1
      adb shell settings get secure show_ime_with_hard_keyboard
 7. Run the following command
      adb shell settings put secure show_ime_with_hard_keyboard 0
 8. Make sure "Show virtual keyboard" is chenged to unchecked
Change-Id: I956da5dad27313d6edf141f2320bb0a7954fbbea
parent d628116e
Loading
Loading
Loading
Loading
+6 −18
Original line number Diff line number Diff line
@@ -38,7 +38,6 @@ import android.support.v7.preference.PreferenceScreen;
import android.text.TextUtils;
import android.view.InputDevice;

import com.android.internal.inputmethod.InputMethodUtils;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.util.Preconditions;
import com.android.settings.R;
@@ -52,7 +51,6 @@ import com.android.settingslib.utils.ThreadUtils;
import java.text.Collator;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Objects;

@@ -73,8 +71,6 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment
    private PreferenceCategory mKeyboardAssistanceCategory;
    @NonNull
    private SwitchPreference mShowVirtualKeyboardSwitch;
    @NonNull
    private InputMethodUtils.InputMethodSettings mSettings;

    private Intent mIntentWaitingForResult;

@@ -83,13 +79,6 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment
        Activity activity = Preconditions.checkNotNull(getActivity());
        addPreferencesFromResource(R.xml.physical_keyboard_settings);
        mIm = Preconditions.checkNotNull(activity.getSystemService(InputManager.class));
        mSettings = new InputMethodUtils.InputMethodSettings(
                activity.getResources(),
                getContentResolver(),
                new HashMap<>(),
                new ArrayList<>(),
                UserHandle.myUserId(),
                false /* copyOnWrite */);
        mKeyboardAssistanceCategory = Preconditions.checkNotNull(
                (PreferenceCategory) findPreference(KEYBOARD_ASSISTANCE_CATEGORY));
        mShowVirtualKeyboardSwitch = Preconditions.checkNotNull(
@@ -210,7 +199,8 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment
    }

    private void updateShowVirtualKeyboardSwitch() {
        mShowVirtualKeyboardSwitch.setChecked(mSettings.isShowImeWithHardKeyboardEnabled());
        mShowVirtualKeyboardSwitch.setChecked(
                Secure.getInt(getContentResolver(), Secure.SHOW_IME_WITH_HARD_KEYBOARD, 0) != 0);
    }

    private void toggleKeyboardShortcutsMenu() {
@@ -218,12 +208,10 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment
    }

    private final OnPreferenceChangeListener mShowVirtualKeyboardSwitchPreferenceChangeListener =
            new OnPreferenceChangeListener() {
                @Override
                public boolean onPreferenceChange(Preference preference, Object newValue) {
                    mSettings.setShowImeWithHardKeyboard((Boolean) newValue);
            (preference, newValue) -> {
                Secure.putInt(getContentResolver(), Secure.SHOW_IME_WITH_HARD_KEYBOARD,
                        ((Boolean) newValue) ? 1 : 0);
                return true;
                }
            };

    private final ContentObserver mContentObserver = new ContentObserver(new Handler(true)) {