From 58c4286ec9e8b3af711ac37efbc3e8437db5ea35 Mon Sep 17 00:00:00 2001 From: Vaibhav Devmurari Date: Tue, 10 Dec 2024 18:49:26 +0000 Subject: [PATCH] Remove old PK settings pages that are unused Test: manual Bug: 330517633 Flag: EXEMPT cleanup Change-Id: I2e0e21cf13ae39a09cd8c7b3697bbf18188e1fa8 --- .../keyboard_layout_dialog_switch_hint.xml | 38 -- res/xml/keyboard_layout_picker_fragment.xml | 23 -- .../core/gateway/SettingsGateway.java | 2 - .../KeyboardLayoutDialogFragment.java | 368 ------------------ .../KeyboardLayoutPickerController.java | 164 -------- .../KeyboardLayoutPickerFragment.java | 64 --- .../inputmethod/PhysicalKeyboardFragment.java | 75 +--- .../exempt_not_implementing_index_provider | 1 - .../KeyboardLayoutPickerControllerTest.java | 196 ---------- ...boardSettingsPreferenceControllerTest.java | 1 - ...sicalKeyboardPreferenceControllerTest.java | 2 - 11 files changed, 4 insertions(+), 930 deletions(-) delete mode 100644 res/layout/keyboard_layout_dialog_switch_hint.xml delete mode 100644 res/xml/keyboard_layout_picker_fragment.xml delete mode 100644 src/com/android/settings/inputmethod/KeyboardLayoutDialogFragment.java delete mode 100644 src/com/android/settings/inputmethod/KeyboardLayoutPickerController.java delete mode 100644 src/com/android/settings/inputmethod/KeyboardLayoutPickerFragment.java delete mode 100644 tests/robotests/src/com/android/settings/inputmethod/KeyboardLayoutPickerControllerTest.java diff --git a/res/layout/keyboard_layout_dialog_switch_hint.xml b/res/layout/keyboard_layout_dialog_switch_hint.xml deleted file mode 100644 index af8c3f451cc..00000000000 --- a/res/layout/keyboard_layout_dialog_switch_hint.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/res/xml/keyboard_layout_picker_fragment.xml b/res/xml/keyboard_layout_picker_fragment.xml deleted file mode 100644 index d1bf97171a0..00000000000 --- a/res/xml/keyboard_layout_picker_fragment.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - diff --git a/src/com/android/settings/core/gateway/SettingsGateway.java b/src/com/android/settings/core/gateway/SettingsGateway.java index 8541c7a6e49..9568efb080d 100644 --- a/src/com/android/settings/core/gateway/SettingsGateway.java +++ b/src/com/android/settings/core/gateway/SettingsGateway.java @@ -130,7 +130,6 @@ import com.android.settings.gestures.PowerMenuSettings; import com.android.settings.gestures.SwipeToNotificationSettings; import com.android.settings.gestures.SystemNavigationGestureSettings; import com.android.settings.inputmethod.AvailableVirtualKeyboardFragment; -import com.android.settings.inputmethod.KeyboardLayoutPickerFragment; import com.android.settings.inputmethod.KeyboardSettings; import com.android.settings.inputmethod.ModifierKeysSettings; import com.android.settings.inputmethod.NewKeyboardLayoutEnabledLocalesFragment; @@ -309,7 +308,6 @@ public class SettingsGateway { PrintJobSettingsFragment.class.getName(), TrustedCredentialsSettings.class.getName(), PaymentSettings.class.getName(), - KeyboardLayoutPickerFragment.class.getName(), PhysicalKeyboardFragment.class.getName(), ZenModeSettings.class.getName(), SoundSettings.class.getName(), diff --git a/src/com/android/settings/inputmethod/KeyboardLayoutDialogFragment.java b/src/com/android/settings/inputmethod/KeyboardLayoutDialogFragment.java deleted file mode 100644 index a4baa917c84..00000000000 --- a/src/com/android/settings/inputmethod/KeyboardLayoutDialogFragment.java +++ /dev/null @@ -1,368 +0,0 @@ -/* - * Copyright (C) 2012 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.settings.inputmethod; - -import android.app.Activity; -import android.app.Dialog; -import android.app.settings.SettingsEnums; -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.hardware.input.InputDeviceIdentifier; -import android.hardware.input.InputManager; -import android.hardware.input.InputManager.InputDeviceListener; -import android.hardware.input.KeyboardLayout; -import android.os.Bundle; -import android.view.InputDevice; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ArrayAdapter; -import android.widget.CheckedTextView; -import android.widget.RadioButton; -import android.widget.TextView; - -import androidx.appcompat.app.AlertDialog; -import androidx.loader.app.LoaderManager.LoaderCallbacks; -import androidx.loader.content.AsyncTaskLoader; -import androidx.loader.content.Loader; - -import com.android.settings.R; -import com.android.settings.core.instrumentation.InstrumentedDialogFragment; - -import java.util.ArrayList; -import java.util.Collections; - -public class KeyboardLayoutDialogFragment extends InstrumentedDialogFragment - implements InputDeviceListener, LoaderCallbacks { - private static final String KEY_INPUT_DEVICE_IDENTIFIER = "inputDeviceIdentifier"; - - private InputDeviceIdentifier mInputDeviceIdentifier; - private int mInputDeviceId = -1; - private InputManager mIm; - private KeyboardLayoutAdapter mAdapter; - - public KeyboardLayoutDialogFragment() { - } - - public KeyboardLayoutDialogFragment(InputDeviceIdentifier inputDeviceIdentifier) { - mInputDeviceIdentifier = inputDeviceIdentifier; - } - - - @Override - public int getMetricsCategory() { - return SettingsEnums.DIALOG_KEYBOARD_LAYOUT; - } - - @Override - public void onAttach(Activity activity) { - super.onAttach(activity); - - Context context = activity.getBaseContext(); - mIm = (InputManager)context.getSystemService(Context.INPUT_SERVICE); - mAdapter = new KeyboardLayoutAdapter(context); - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - if (savedInstanceState != null) { - mInputDeviceIdentifier = savedInstanceState.getParcelable(KEY_INPUT_DEVICE_IDENTIFIER); - } - - getLoaderManager().initLoader(0, null, this); - } - - @Override - public void onSaveInstanceState(Bundle outState) { - super.onSaveInstanceState(outState); - outState.putParcelable(KEY_INPUT_DEVICE_IDENTIFIER, mInputDeviceIdentifier); - } - - @Override - public Dialog onCreateDialog(Bundle savedInstanceState) { - Context context = getActivity(); - LayoutInflater inflater = LayoutInflater.from(context); - AlertDialog.Builder builder = new AlertDialog.Builder(context) - .setTitle(R.string.keyboard_layout_dialog_title) - .setPositiveButton(R.string.keyboard_layout_dialog_setup_button, - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - onSetupLayoutsButtonClicked(); - } - }) - .setSingleChoiceItems(mAdapter, -1, - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - onKeyboardLayoutClicked(which); - } - }) - .setView(inflater.inflate(R.layout.keyboard_layout_dialog_switch_hint, null)); - updateSwitchHintVisibility(); - return builder.create(); - } - - @Override - public void onResume() { - super.onResume(); - - mIm.registerInputDeviceListener(this, null); - - InputDevice inputDevice = - mIm.getInputDeviceByDescriptor(mInputDeviceIdentifier.getDescriptor()); - if (inputDevice == null) { - dismiss(); - return; - } - mInputDeviceId = inputDevice.getId(); - } - - @Override - public void onPause() { - mIm.unregisterInputDeviceListener(this); - mInputDeviceId = -1; - - super.onPause(); - } - - @Override - public void onCancel(DialogInterface dialog) { - super.onCancel(dialog); - dismiss(); - } - - private void onSetupLayoutsButtonClicked() { - ((OnSetupKeyboardLayoutsListener)getTargetFragment()).onSetupKeyboardLayouts( - mInputDeviceIdentifier); - } - - @Override - public void onActivityResult(int requestCode, int resultCode, Intent data) { - super.onActivityResult(requestCode, resultCode, data); - show(getActivity().getSupportFragmentManager(), "layout"); - } - - private void onKeyboardLayoutClicked(int which) { - if (which >= 0 && which < mAdapter.getCount()) { - KeyboardLayout keyboardLayout = mAdapter.getItem(which); - if (keyboardLayout != null) { - mIm.setCurrentKeyboardLayoutForInputDevice(mInputDeviceIdentifier, - keyboardLayout.getDescriptor()); - } - dismiss(); - } - } - - @Override - public Loader onCreateLoader(int id, Bundle args) { - return new KeyboardLayoutLoader(getActivity().getBaseContext(), mInputDeviceIdentifier); - } - - @Override - public void onLoadFinished(Loader loader, Keyboards data) { - mAdapter.clear(); - mAdapter.addAll(data.keyboardLayouts); - mAdapter.setCheckedItem(data.current); - AlertDialog dialog = (AlertDialog)getDialog(); - if (dialog != null) { - dialog.getListView().setItemChecked(data.current, true); - } - updateSwitchHintVisibility(); - } - - @Override - public void onLoaderReset(Loader loader) { - mAdapter.clear(); - updateSwitchHintVisibility(); - } - - @Override - public void onInputDeviceAdded(int deviceId) { - } - - @Override - public void onInputDeviceChanged(int deviceId) { - if (mInputDeviceId >= 0 && deviceId == mInputDeviceId) { - getLoaderManager().restartLoader(0, null, this); - } - } - - @Override - public void onInputDeviceRemoved(int deviceId) { - if (mInputDeviceId >= 0 && deviceId == mInputDeviceId) { - dismiss(); - } - } - - private void updateSwitchHintVisibility() { - AlertDialog dialog = (AlertDialog)getDialog(); - if (dialog != null) { - View customPanel = dialog.findViewById(com.google.android.material.R.id.customPanel); - customPanel.setVisibility(mAdapter.getCount() > 1 ? View.VISIBLE : View.GONE); - } - } - - private static final class KeyboardLayoutAdapter extends ArrayAdapter { - private final LayoutInflater mInflater; - private int mCheckedItem = -1; - - public KeyboardLayoutAdapter(Context context) { - super(context, com.android.internal.R.layout.simple_list_item_2_single_choice); - mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); - } - - public void setCheckedItem(int position) { - mCheckedItem = position; - } - - @Override - public View getView(int position, View convertView, ViewGroup parent) { - KeyboardLayout item = getItem(position); - String label, collection; - if (item != null) { - label = item.getLabel(); - collection = item.getCollection(); - } else { - label = getContext().getString(R.string.keyboard_layout_default_label); - collection = ""; - } - - boolean checked = (position == mCheckedItem); - if (collection.isEmpty()) { - return inflateOneLine(convertView, parent, label, checked); - } else { - return inflateTwoLine(convertView, parent, label, collection, checked); - } - } - - private View inflateOneLine(View convertView, ViewGroup parent, - String label, boolean checked) { - View view = convertView; - if (view == null || isTwoLine(view)) { - view = mInflater.inflate( - com.android.internal.R.layout.simple_list_item_single_choice, - parent, false); - setTwoLine(view, false); - } - CheckedTextView headline = (CheckedTextView) view.findViewById(android.R.id.text1); - headline.setText(label); - headline.setChecked(checked); - return view; - } - - private View inflateTwoLine(View convertView, ViewGroup parent, - String label, String collection, boolean checked) { - View view = convertView; - if (view == null || !isTwoLine(view)) { - view = mInflater.inflate( - com.android.internal.R.layout.simple_list_item_2_single_choice, - parent, false); - setTwoLine(view, true); - } - TextView headline = (TextView) view.findViewById(android.R.id.text1); - TextView subText = (TextView) view.findViewById(android.R.id.text2); - RadioButton radioButton = - (RadioButton)view.findViewById(com.android.internal.R.id.radio); - headline.setText(label); - subText.setText(collection); - radioButton.setChecked(checked); - return view; - } - - private static boolean isTwoLine(View view) { - return view.getTag() == Boolean.TRUE; - } - - private static void setTwoLine(View view, boolean twoLine) { - view.setTag(Boolean.valueOf(twoLine)); - } - } - - private static final class KeyboardLayoutLoader extends AsyncTaskLoader { - private final InputDeviceIdentifier mInputDeviceIdentifier; - - public KeyboardLayoutLoader(Context context, InputDeviceIdentifier inputDeviceIdentifier) { - super(context); - mInputDeviceIdentifier = inputDeviceIdentifier; - } - - @Override - public Keyboards loadInBackground() { - Keyboards keyboards = new Keyboards(); - InputManager im = (InputManager)getContext().getSystemService(Context.INPUT_SERVICE); - if (mInputDeviceIdentifier == null || InputPeripheralsSettingsUtils.getInputDevice( - im, mInputDeviceIdentifier) == null) { - keyboards.keyboardLayouts.add(null); // default layout - keyboards.current = 0; - return keyboards; - } - String[] keyboardLayoutDescriptors = im.getEnabledKeyboardLayoutsForInputDevice( - mInputDeviceIdentifier); - for (String keyboardLayoutDescriptor : keyboardLayoutDescriptors) { - KeyboardLayout keyboardLayout = im.getKeyboardLayout(keyboardLayoutDescriptor); - if (keyboardLayout != null) { - keyboards.keyboardLayouts.add(keyboardLayout); - } - } - Collections.sort(keyboards.keyboardLayouts); - - String currentKeyboardLayoutDescriptor = - im.getCurrentKeyboardLayoutForInputDevice(mInputDeviceIdentifier); - if (currentKeyboardLayoutDescriptor != null) { - final int numKeyboardLayouts = keyboards.keyboardLayouts.size(); - for (int i = 0; i < numKeyboardLayouts; i++) { - if (keyboards.keyboardLayouts.get(i).getDescriptor().equals( - currentKeyboardLayoutDescriptor)) { - keyboards.current = i; - break; - } - } - } - - if (keyboards.keyboardLayouts.isEmpty()) { - keyboards.keyboardLayouts.add(null); // default layout - keyboards.current = 0; - } - return keyboards; - } - - @Override - protected void onStartLoading() { - super.onStartLoading(); - forceLoad(); - } - - @Override - protected void onStopLoading() { - super.onStopLoading(); - cancelLoad(); - } - } - - public static final class Keyboards { - public final ArrayList keyboardLayouts = new ArrayList(); - public int current = -1; - } - - public interface OnSetupKeyboardLayoutsListener { - public void onSetupKeyboardLayouts(InputDeviceIdentifier mInputDeviceIdentifier); - } -} diff --git a/src/com/android/settings/inputmethod/KeyboardLayoutPickerController.java b/src/com/android/settings/inputmethod/KeyboardLayoutPickerController.java deleted file mode 100644 index 97d8ffcff84..00000000000 --- a/src/com/android/settings/inputmethod/KeyboardLayoutPickerController.java +++ /dev/null @@ -1,164 +0,0 @@ -/* - * Copyright (C) 2018 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.settings.inputmethod; - - -import android.content.Context; -import android.hardware.input.InputDeviceIdentifier; -import android.hardware.input.InputManager; -import android.hardware.input.KeyboardLayout; - -import androidx.fragment.app.Fragment; -import androidx.preference.Preference; -import androidx.preference.PreferenceScreen; -import androidx.preference.SwitchPreferenceCompat; -import androidx.preference.TwoStatePreference; - -import com.android.settings.core.BasePreferenceController; -import com.android.settingslib.core.lifecycle.LifecycleObserver; -import com.android.settingslib.core.lifecycle.events.OnStart; -import com.android.settingslib.core.lifecycle.events.OnStop; - -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; - -public class KeyboardLayoutPickerController extends BasePreferenceController implements - InputManager.InputDeviceListener, LifecycleObserver, OnStart, OnStop { - - private final InputManager mIm; - private final Map mPreferenceMap; - - private Fragment mParent; - private int mInputDeviceId; - private InputDeviceIdentifier mInputDeviceIdentifier; - private KeyboardLayout[] mKeyboardLayouts; - private PreferenceScreen mScreen; - - - public KeyboardLayoutPickerController(Context context, String key) { - super(context, key); - mIm = (InputManager) context.getSystemService(Context.INPUT_SERVICE); - mInputDeviceId = -1; - mPreferenceMap = new HashMap<>(); - } - - public void initialize(Fragment parent, InputDeviceIdentifier inputDeviceIdentifier) { - mParent = parent; - mInputDeviceIdentifier = inputDeviceIdentifier; - mKeyboardLayouts = mIm.getKeyboardLayoutsForInputDevice(mInputDeviceIdentifier); - Arrays.sort(mKeyboardLayouts); - } - - @Override - public void onStart() { - mIm.registerInputDeviceListener(this, null); - if (mInputDeviceIdentifier == null - || InputPeripheralsSettingsUtils.getInputDevice(mIm, mInputDeviceIdentifier) - == null) { - return; - } - mInputDeviceId = - InputPeripheralsSettingsUtils.getInputDevice(mIm, - mInputDeviceIdentifier).getId(); - updateCheckedState(); - } - - @Override - public void onStop() { - mIm.unregisterInputDeviceListener(this); - mInputDeviceId = -1; - } - - @Override - public void displayPreference(PreferenceScreen screen) { - super.displayPreference(screen); - mScreen = screen; - createPreferenceHierarchy(); - } - - @Override - public int getAvailabilityStatus() { - return AVAILABLE; - } - - @Override - public boolean handlePreferenceTreeClick(Preference preference) { - if (!(preference instanceof TwoStatePreference switchPref)) { - return false; - } - - final KeyboardLayout layout = mPreferenceMap.get(switchPref); - if (layout != null) { - final boolean checked = switchPref.isChecked(); - if (checked) { - mIm.addKeyboardLayoutForInputDevice(mInputDeviceIdentifier, - layout.getDescriptor()); - } else { - mIm.removeKeyboardLayoutForInputDevice(mInputDeviceIdentifier, - layout.getDescriptor()); - } - } - return true; - } - - @Override - public void onInputDeviceAdded(int deviceId) { - - } - - @Override - public void onInputDeviceRemoved(int deviceId) { - if (mInputDeviceId >= 0 && deviceId == mInputDeviceId) { - mParent.getActivity().finish(); - } - } - - @Override - public void onInputDeviceChanged(int deviceId) { - if (mInputDeviceId >= 0 && deviceId == mInputDeviceId) { - updateCheckedState(); - } - } - - private void updateCheckedState() { - final String[] enabledKeyboardLayouts = mIm.getEnabledKeyboardLayoutsForInputDevice( - mInputDeviceIdentifier); - Arrays.sort(enabledKeyboardLayouts); - - for (Map.Entry entry : mPreferenceMap.entrySet()) { - entry.getKey().setChecked(Arrays.binarySearch(enabledKeyboardLayouts, - entry.getValue().getDescriptor()) >= 0); - } - } - - private void createPreferenceHierarchy() { - if (mKeyboardLayouts == null) { - return; - } - for (KeyboardLayout layout : mKeyboardLayouts) { - final TwoStatePreference pref = new SwitchPreferenceCompat(mScreen.getContext()); - pref.setTitle(layout.getLabel()); - pref.setSummary(layout.getCollection()); - // TODO: Waiting for new API to use a prefix with special number to setKey - pref.setKey(layout.getDescriptor()); - mScreen.addPreference(pref); - mPreferenceMap.put(pref, layout); - } - } -} - diff --git a/src/com/android/settings/inputmethod/KeyboardLayoutPickerFragment.java b/src/com/android/settings/inputmethod/KeyboardLayoutPickerFragment.java deleted file mode 100644 index c21ac636f09..00000000000 --- a/src/com/android/settings/inputmethod/KeyboardLayoutPickerFragment.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.settings.inputmethod; - -import android.app.settings.SettingsEnums; -import android.content.Context; -import android.hardware.input.InputDeviceIdentifier; -import android.hardware.input.InputManager; - -import com.android.settings.R; -import com.android.settings.dashboard.DashboardFragment; - -public class KeyboardLayoutPickerFragment extends DashboardFragment { - - private static final String TAG = "KeyboardLayoutPicker"; - - /** - * Intent extra: The input device descriptor of the keyboard whose keyboard - * layout is to be changed. - */ - public static final String EXTRA_INPUT_DEVICE_IDENTIFIER = "input_device_identifier"; - - @Override - public int getMetricsCategory() { - return SettingsEnums.INPUTMETHOD_KEYBOARD; - } - - @Override - public void onAttach(Context context) { - super.onAttach(context); - - final InputDeviceIdentifier inputDeviceIdentifier = getActivity().getIntent(). - getParcelableExtra(EXTRA_INPUT_DEVICE_IDENTIFIER); - final InputManager im = context.getSystemService(InputManager.class); - if (InputPeripheralsSettingsUtils.getInputDevice(im, inputDeviceIdentifier) == null) { - return; - } - use(KeyboardLayoutPickerController.class).initialize(this /*parent*/, - inputDeviceIdentifier); - } - - @Override - protected String getLogTag() { - return TAG; - } - - protected int getPreferenceScreenResId() { - return R.xml.keyboard_layout_picker_fragment; - } -} diff --git a/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java b/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java index fcb672da404..8aa5ac7bb26 100644 --- a/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java +++ b/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java @@ -20,12 +20,10 @@ import android.app.Activity; import android.app.settings.SettingsEnums; import android.content.ContentResolver; import android.content.Context; -import android.content.Intent; import android.database.ContentObserver; import android.hardware.input.InputDeviceIdentifier; import android.hardware.input.InputManager; import android.hardware.input.InputSettings; -import android.hardware.input.KeyboardLayout; import android.net.Uri; import android.os.Bundle; import android.os.Handler; @@ -47,7 +45,6 @@ import androidx.preference.TwoStatePreference; import com.android.internal.util.Preconditions; import com.android.settings.R; -import com.android.settings.Settings; import com.android.settings.core.SubSettingLauncher; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.keyboard.Flags; @@ -66,8 +63,7 @@ import java.util.Objects; // controllers between here and A11y Setting page. @SearchIndexable public final class PhysicalKeyboardFragment extends DashboardFragment - implements InputManager.InputDeviceListener, - KeyboardLayoutDialogFragment.OnSetupKeyboardLayoutsListener { + implements InputManager.InputDeviceListener { private static final String KEYBOARD_OPTIONS_CATEGORY = "keyboard_options_category"; private static final String KEYBOARD_A11Y_CATEGORY = "keyboard_a11y_category"; @@ -79,6 +75,7 @@ public final class PhysicalKeyboardFragment extends DashboardFragment private static final String KEYBOARD_SHORTCUTS_HELPER = "keyboard_shortcuts_helper"; private static final String MODIFIER_KEYS_SETTINGS = "modifier_keys_settings"; private static final String EXTRA_AUTO_SELECTION = "auto_selection"; + public static final String EXTRA_INPUT_DEVICE_IDENTIFIER = "input_device_identifier"; private static final String TAG = "KeyboardAndTouchA11yFragment"; private static final Uri sVirtualKeyboardSettingsUri = Secure.getUriFor( Secure.SHOW_IME_WITH_HARD_KEYBOARD); @@ -112,13 +109,8 @@ public final class PhysicalKeyboardFragment extends DashboardFragment private TwoStatePreference mAccessibilityStickyKeys = null; @Nullable private TwoStatePreference mAccessibilityMouseKeys = null; - - private Intent mIntentWaitingForResult; private boolean mSupportsFirmwareUpdate; - static final String EXTRA_BT_ADDRESS = "extra_bt_address"; - private String mBluetoothAddress; - @Override protected String getLogTag() { return TAG; @@ -197,8 +189,7 @@ public final class PhysicalKeyboardFragment extends DashboardFragment mKeyboardA11yCategory.setVisible(false); } InputDeviceIdentifier inputDeviceIdentifier = activity.getIntent().getParcelableExtra( - KeyboardLayoutPickerFragment.EXTRA_INPUT_DEVICE_IDENTIFIER, - InputDeviceIdentifier.class); + EXTRA_INPUT_DEVICE_IDENTIFIER, InputDeviceIdentifier.class); int intentFromWhere = activity.getIntent().getIntExtra(android.provider.Settings.EXTRA_ENTRYPOINT, -1); if (intentFromWhere != -1) { @@ -360,13 +351,6 @@ public final class PhysicalKeyboardFragment extends DashboardFragment } } - private void showKeyboardLayoutDialog(InputDeviceIdentifier inputDeviceIdentifier) { - KeyboardLayoutDialogFragment fragment = new KeyboardLayoutDialogFragment( - inputDeviceIdentifier); - fragment.setTargetFragment(this, 0); - fragment.show(getActivity().getSupportFragmentManager(), "keyboardLayout"); - } - private void showEnabledLocalesKeyboardLayoutList(InputDeviceIdentifier inputDeviceIdentifier) { Bundle arguments = new Bundle(); arguments.putParcelable(InputPeripheralsSettingsUtils.EXTRA_INPUT_DEVICE_IDENTIFIER, @@ -505,45 +489,6 @@ public final class PhysicalKeyboardFragment extends DashboardFragment } }; - @Override - public void onSetupKeyboardLayouts(InputDeviceIdentifier inputDeviceIdentifier) { - final Intent intent = new Intent(Intent.ACTION_MAIN); - intent.setClass(getActivity(), Settings.KeyboardLayoutPickerActivity.class); - intent.putExtra(KeyboardLayoutPickerFragment.EXTRA_INPUT_DEVICE_IDENTIFIER, - inputDeviceIdentifier); - mIntentWaitingForResult = intent; - startActivityForResult(intent, 0); - } - - @Override - public void onActivityResult(int requestCode, int resultCode, Intent data) { - super.onActivityResult(requestCode, resultCode, data); - - if (mIntentWaitingForResult != null) { - InputDeviceIdentifier inputDeviceIdentifier = mIntentWaitingForResult - .getParcelableExtra(KeyboardLayoutPickerFragment.EXTRA_INPUT_DEVICE_IDENTIFIER, - InputDeviceIdentifier.class); - mIntentWaitingForResult = null; - showKeyboardLayoutDialog(inputDeviceIdentifier); - } - } - - private static String getLayoutLabel(@NonNull InputDevice device, - @NonNull Context context, @NonNull InputManager im) { - final String currentLayoutDesc = - im.getCurrentKeyboardLayoutForInputDevice(device.getIdentifier()); - if (currentLayoutDesc == null) { - return context.getString(R.string.keyboard_layout_default_label); - } - final KeyboardLayout currentLayout = im.getKeyboardLayout(currentLayoutDesc); - if (currentLayout == null) { - return context.getString(R.string.keyboard_layout_default_label); - } - // If current layout is specified but the layout is null, just return an empty string - // instead of falling back to R.string.keyboard_layout_default_label. - return TextUtils.emptyIfNull(currentLayout.getLabel()); - } - @NonNull static List getHardKeyboards(@NonNull Context context) { final List keyboards = new ArrayList<>(); @@ -559,7 +504,6 @@ public final class PhysicalKeyboardFragment extends DashboardFragment keyboards.add(new HardKeyboardDeviceInfo( device.getName(), device.getIdentifier(), - getLayoutLabel(device, context, im), device.getBluetoothAddress(), device.getVendorId(), device.getProductId())); @@ -572,12 +516,8 @@ public final class PhysicalKeyboardFragment extends DashboardFragment if (result != 0) { return result; } - result = a.mDeviceIdentifier.getDescriptor().compareTo( + return a.mDeviceIdentifier.getDescriptor().compareTo( b.mDeviceIdentifier.getDescriptor()); - if (result != 0) { - return result; - } - return collator.compare(a.mLayoutLabel, b.mLayoutLabel); }); return keyboards; } @@ -587,8 +527,6 @@ public final class PhysicalKeyboardFragment extends DashboardFragment public final String mDeviceName; @NonNull public final InputDeviceIdentifier mDeviceIdentifier; - @NonNull - public final String mLayoutLabel; @Nullable public final String mBluetoothAddress; @NonNull @@ -599,13 +537,11 @@ public final class PhysicalKeyboardFragment extends DashboardFragment public HardKeyboardDeviceInfo( @Nullable String deviceName, @NonNull InputDeviceIdentifier deviceIdentifier, - @NonNull String layoutLabel, @Nullable String bluetoothAddress, @NonNull int vendorId, @NonNull int productId) { mDeviceName = TextUtils.emptyIfNull(deviceName); mDeviceIdentifier = deviceIdentifier; - mLayoutLabel = layoutLabel; mBluetoothAddress = bluetoothAddress; mVendorId = vendorId; mProductId = productId; @@ -625,9 +561,6 @@ public final class PhysicalKeyboardFragment extends DashboardFragment if (!Objects.equals(mDeviceIdentifier, that.mDeviceIdentifier)) { return false; } - if (!TextUtils.equals(mLayoutLabel, that.mLayoutLabel)) { - return false; - } if (!TextUtils.equals(mBluetoothAddress, that.mBluetoothAddress)) { return false; } diff --git a/tests/robotests/assets/exempt_not_implementing_index_provider b/tests/robotests/assets/exempt_not_implementing_index_provider index 7099089fb6a..215749189f6 100644 --- a/tests/robotests/assets/exempt_not_implementing_index_provider +++ b/tests/robotests/assets/exempt_not_implementing_index_provider @@ -48,7 +48,6 @@ com.android.settings.fuelgauge.InactiveApps com.android.settings.fuelgauge.RestrictedAppDetails com.android.settings.IccLockSettings com.android.settings.inputmethod.InputMethodAndSubtypeEnabler -com.android.settings.inputmethod.KeyboardLayoutPickerFragment com.android.settings.inputmethod.SpellCheckersSettings com.android.settings.location.LocationPersonalSettings com.android.settings.location.LocationWorkProfileSettings diff --git a/tests/robotests/src/com/android/settings/inputmethod/KeyboardLayoutPickerControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/KeyboardLayoutPickerControllerTest.java deleted file mode 100644 index 0a1ccbbbcc8..00000000000 --- a/tests/robotests/src/com/android/settings/inputmethod/KeyboardLayoutPickerControllerTest.java +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Copyright (C) 2018 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.settings.inputmethod; - -import static com.google.common.truth.Truth.assertThat; - -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import android.content.Context; -import android.hardware.input.InputDeviceIdentifier; -import android.hardware.input.InputManager; -import android.hardware.input.KeyboardLayout; -import android.view.InputDevice; - -import androidx.fragment.app.Fragment; -import androidx.fragment.app.FragmentActivity; -import androidx.preference.PreferenceManager; -import androidx.preference.PreferenceScreen; - -import com.android.settings.core.BasePreferenceController; -import com.android.settings.testutils.shadow.ShadowInputDevice; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.robolectric.Robolectric; -import org.robolectric.RobolectricTestRunner; -import org.robolectric.RuntimeEnvironment; -import org.robolectric.annotation.Config; -import org.robolectric.shadows.ShadowApplication; - -@RunWith(RobolectricTestRunner.class) -@Config(shadows = { - com.android.settings.testutils.shadow.ShadowFragment.class, -}) -public class KeyboardLayoutPickerControllerTest { - - @Mock - private Fragment mFragment; - @Mock - private InputManager mInputManager; - - private Context mContext; - private InputDeviceIdentifier mInputDeviceIdentifier; - private KeyboardLayoutPickerController mController; - - @Before - public void setUp() { - MockitoAnnotations.initMocks(this); - final ShadowApplication shadowContext = ShadowApplication.getInstance(); - shadowContext.setSystemService(Context.INPUT_SERVICE, mInputManager); - - mContext = RuntimeEnvironment.application; - mInputDeviceIdentifier = new InputDeviceIdentifier("descriptor", 1, 1); - mController = new KeyboardLayoutPickerController(mContext, "pref_key"); - - initializeOneLayout(); - } - - @Test - public void isAlwaysAvailable() { - assertThat(mController.getAvailabilityStatus()) - .isEqualTo(BasePreferenceController.AVAILABLE); - } - - @Test - public void testLifecycle_onStart_shouldRegisterInputManager() { - final FragmentActivity activity = Robolectric.setupActivity(FragmentActivity.class); - when(mFragment.getActivity()).thenReturn(activity); - - mController.onStart(); - - // Register is called, but unregister should not be called. - verify(mInputManager).registerInputDeviceListener(mController, null); - verify(mInputManager, never()).unregisterInputDeviceListener(mController); - } - - @Test - public void testLifecycle_onStart_NoInputDevice_shouldReturn() { - final FragmentActivity activity = Robolectric.setupActivity(FragmentActivity.class); - when(mInputManager.getInputDeviceByDescriptor(anyString())).thenReturn(null); - when(mFragment.getActivity()).thenReturn(activity); - - mController.onStart(); - verify(mInputManager, never()).getEnabledKeyboardLayoutsForInputDevice(any()); - } - - @Test - public void testLifecycle_onStop_shouldCancelRegisterInputManager() { - mController.onStop(); - - // Unregister is called, but register should not be called. - verify(mInputManager).unregisterInputDeviceListener(mController); - verify(mInputManager, never()).registerInputDeviceListener(mController, null); - } - - @Test - public void test_createPreferenceHierarchy_shouldAddOnePreference() { - final PreferenceManager preferenceManager = new PreferenceManager(mContext); - final PreferenceScreen screen = preferenceManager.createPreferenceScreen(mContext); - - mController.displayPreference(screen); - - // We create a keyboard layouts in initializeOneLayout() - assertThat(screen.getPreferenceCount()).isEqualTo(1); - } - - @Test - public void test_createPreferenceHierarchy_shouldAddTwoPreference() { - initializeTwoLayouts(); - final PreferenceManager preferenceManager = new PreferenceManager(mContext); - final PreferenceScreen screen = preferenceManager.createPreferenceScreen(mContext); - - mController.displayPreference(screen); - - // We create two keyboard layouts in initializeOneLayout() - assertThat(screen.getPreferenceCount()).isEqualTo(2); - } - - @Test - @Config(shadows = ShadowInputDevice.class) - public void testOnDeviceRemove_getSameDevice_shouldFinish() { - final int TARGET_DEVICE_ID = 1; - final FragmentActivity activity = Robolectric.setupActivity(FragmentActivity.class); - final String[] enableKeyboardLayouts = {"layout1"}; - final InputDevice device = ShadowInputDevice.makeInputDevicebyId(TARGET_DEVICE_ID); - - when(mFragment.getActivity()).thenReturn(activity); - when(mInputManager.getInputDeviceByDescriptor(anyString())).thenReturn(device); - when(mInputManager.getEnabledKeyboardLayoutsForInputDevice( - any(InputDeviceIdentifier.class))).thenReturn(enableKeyboardLayouts); - - mController.onStart(); - mController.onInputDeviceRemoved(TARGET_DEVICE_ID); - - assertThat(activity.isFinishing()).isTrue(); - } - - @Test - @Config(shadows = ShadowInputDevice.class) - public void testOnDeviceRemove_getDifferentDevice_shouldNotFinish() { - final int TARGET_DEVICE_ID = 1; - final int ANOTHER_DEVICE_ID = 2; - final FragmentActivity activity = Robolectric.setupActivity(FragmentActivity.class); - final String[] enableKeyboardLayouts = {"layout1"}; - final InputDevice device = ShadowInputDevice.makeInputDevicebyId(TARGET_DEVICE_ID); - - when(mFragment.getActivity()).thenReturn(activity); - when(mInputManager.getInputDeviceByDescriptor(anyString())).thenReturn(device); - when(mInputManager.getEnabledKeyboardLayoutsForInputDevice( - any(InputDeviceIdentifier.class))).thenReturn(enableKeyboardLayouts); - - mController.onStart(); - mController.onInputDeviceRemoved(ANOTHER_DEVICE_ID); - - assertThat(activity.isFinishing()).isFalse(); - } - - private void initializeOneLayout() { - final KeyboardLayout[] keyboardLayouts = {new KeyboardLayout("", "", "", 1, null, 0, 1, 1)}; - when(mInputManager.getKeyboardLayoutsForInputDevice( - any(InputDeviceIdentifier.class))).thenReturn( - keyboardLayouts); - - mController.initialize(mFragment, mInputDeviceIdentifier); - } - - private void initializeTwoLayouts() { - final KeyboardLayout[] keyboardLayouts = {new KeyboardLayout("", "", "", 1, null, 0, 1, 1), - new KeyboardLayout("", "", "", 2, null, 0, 2, 2)}; - when(mInputManager.getKeyboardLayoutsForInputDevice(any(InputDeviceIdentifier.class))). - thenReturn(keyboardLayouts); - - mController.initialize(mFragment, mInputDeviceIdentifier); - } -} diff --git a/tests/robotests/src/com/android/settings/inputmethod/KeyboardSettingsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/KeyboardSettingsPreferenceControllerTest.java index b8070d38c5d..482dcd35b40 100644 --- a/tests/robotests/src/com/android/settings/inputmethod/KeyboardSettingsPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/inputmethod/KeyboardSettingsPreferenceControllerTest.java @@ -90,7 +90,6 @@ public class KeyboardSettingsPreferenceControllerTest { new HardKeyboardDeviceInfo( "TEST_DEVICE", mInputDeviceIdentifier, - "TEST_DEVICE_LABEL", address, VENDOR_ID, PRODUCT_ID); diff --git a/tests/robotests/src/com/android/settings/inputmethod/PhysicalKeyboardPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/PhysicalKeyboardPreferenceControllerTest.java index 9ddfd5b4482..014a506a166 100644 --- a/tests/robotests/src/com/android/settings/inputmethod/PhysicalKeyboardPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/inputmethod/PhysicalKeyboardPreferenceControllerTest.java @@ -50,7 +50,6 @@ import java.util.List; public class PhysicalKeyboardPreferenceControllerTest { private static final String DEVICE_NAME = "deviceName"; - private static final String LAYOUT_LABEL = "deviceLayutLabel"; private static final String BLUETOOTHADDRESS = "deviceBluetoothAddress"; private static final int VENDOR_ID = 123; private static final int PRODUCT_ID = 456; @@ -85,7 +84,6 @@ public class PhysicalKeyboardPreferenceControllerTest { keyboards.add(new HardKeyboardDeviceInfo( DEVICE_NAME, mIdentifier, - LAYOUT_LABEL, BLUETOOTHADDRESS, VENDOR_ID, PRODUCT_ID));