diff --git a/res/xml/available_virtual_keyboard.xml b/res/xml/available_virtual_keyboard.xml index 6be06a2678c..893b6fcd036 100644 --- a/res/xml/available_virtual_keyboard.xml +++ b/res/xml/available_virtual_keyboard.xml @@ -17,6 +17,6 @@ + android:title="@string/virtual_keyboard_category"> diff --git a/res/xml/language_and_input.xml b/res/xml/language_and_input.xml index 642af3be3cc..2055ab70809 100644 --- a/res/xml/language_and_input.xml +++ b/res/xml/language_and_input.xml @@ -32,7 +32,7 @@ diff --git a/res/xml/virtual_keyboard_settings.xml b/res/xml/virtual_keyboard_settings.xml deleted file mode 100644 index 5a300824572..00000000000 --- a/res/xml/virtual_keyboard_settings.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - diff --git a/src/com/android/settings/inputmethod/AvailableVirtualKeyboardFragment.java b/src/com/android/settings/inputmethod/AvailableVirtualKeyboardFragment.java index d41a3783c7f..7523ae4d466 100644 --- a/src/com/android/settings/inputmethod/AvailableVirtualKeyboardFragment.java +++ b/src/com/android/settings/inputmethod/AvailableVirtualKeyboardFragment.java @@ -105,7 +105,7 @@ public final class AvailableVirtualKeyboardFragment extends SettingsPreferenceFr || permittedList.contains(imi.getPackageName()) || enabledImis.contains(imi); final InputMethodPreference pref = new InputMethodPreference( - context, imi, true, isAllowedByOrganization, this); + context, imi, isAllowedByOrganization, this); pref.setIcon(imi.loadIcon(context.getPackageManager())); mInputMethodPreferenceList.add(pref); } diff --git a/src/com/android/settings/inputmethod/InputMethodPreferenceController.java b/src/com/android/settings/inputmethod/InputMethodPreferenceController.java deleted file mode 100644 index 1b1103870b5..00000000000 --- a/src/com/android/settings/inputmethod/InputMethodPreferenceController.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright (C) 2019 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.admin.DevicePolicyManager; -import android.content.Context; -import android.graphics.drawable.Drawable; -import android.view.inputmethod.InputMethodInfo; -import android.view.inputmethod.InputMethodManager; - -import androidx.preference.Preference; -import androidx.preference.PreferenceScreen; - -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.inputmethod.InputMethodPreference; - -import com.google.common.annotations.VisibleForTesting; - -import java.text.Collator; -import java.util.ArrayList; -import java.util.List; - -public class InputMethodPreferenceController extends BasePreferenceController implements - LifecycleObserver, OnStart { - - @VisibleForTesting - PreferenceScreen mScreen; - private Preference mPreference; - private InputMethodManager mImm; - private DevicePolicyManager mDpm; - - public InputMethodPreferenceController(Context context, String key) { - super(context, key); - mImm = context.getSystemService(InputMethodManager.class); - mDpm = context.getSystemService(DevicePolicyManager.class); - } - - @Override - public int getAvailabilityStatus() { - return AVAILABLE; - } - - @Override - public void displayPreference(PreferenceScreen screen) { - super.displayPreference(screen); - mScreen = screen; - mPreference = mScreen.findPreference(getPreferenceKey()); - } - - @Override - public void onStart() { - updateInputMethodPreferenceViews(); - } - - private void updateInputMethodPreferenceViews() { - final List preferenceList = new ArrayList<>(); - - final List permittedList = mDpm.getPermittedInputMethodsForCurrentUser(); - final List imis = mImm.getEnabledInputMethodList(); - final int N = (imis == null ? 0 : imis.size()); - for (int i = 0; i < N; ++i) { - final InputMethodInfo imi = imis.get(i); - final boolean isAllowedByOrganization = permittedList == null - || permittedList.contains(imi.getPackageName()); - final Drawable icon = imi.loadIcon(mContext.getPackageManager()); - final InputMethodPreference pref = new InputMethodPreference( - mScreen.getContext(), - imi, - false, /* isImeEnabler */ - isAllowedByOrganization, - null /* this can be null since isImeEnabler is false */); - pref.setIcon(icon); - preferenceList.add(pref); - } - final Collator collator = Collator.getInstance(); - preferenceList.sort((lhs, rhs) -> lhs.compareTo(rhs, collator)); - mScreen.removeAll(); - for (int i = 0; i < N; ++i) { - final InputMethodPreference pref = preferenceList.get(i); - pref.setOrder(i); - mScreen.addPreference(pref); - pref.updatePreferenceViews(); - } - mScreen.addPreference(mPreference); - } -} diff --git a/src/com/android/settings/inputmethod/VirtualKeyboardFragment.java b/src/com/android/settings/inputmethod/VirtualKeyboardFragment.java deleted file mode 100644 index 903905b2b47..00000000000 --- a/src/com/android/settings/inputmethod/VirtualKeyboardFragment.java +++ /dev/null @@ -1,62 +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.provider.SearchIndexableResource; - -import com.android.settings.R; -import com.android.settings.dashboard.DashboardFragment; -import com.android.settings.search.BaseSearchIndexProvider; -import com.android.settingslib.search.Indexable; -import com.android.settingslib.search.SearchIndexable; - -import java.util.Arrays; -import java.util.List; - -@SearchIndexable -public final class VirtualKeyboardFragment extends DashboardFragment { - - private static final String TAG = "VirtualKeyboardFragment"; - - @Override - protected int getPreferenceScreenResId() { - return R.xml.virtual_keyboard_settings; - } - - @Override - protected String getLogTag() { - return TAG; - } - - @Override - public int getMetricsCategory() { - return SettingsEnums.VIRTUAL_KEYBOARDS; - } - - public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = - new BaseSearchIndexProvider() { - @Override - public List getXmlResourcesToIndex( - Context context, boolean enabled) { - final SearchIndexableResource sir = new SearchIndexableResource(context); - sir.xmlResId = R.xml.virtual_keyboard_settings; - return Arrays.asList(sir); - } - }; -} diff --git a/tests/robotests/src/com/android/settings/inputmethod/InputMethodPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/InputMethodPreferenceControllerTest.java deleted file mode 100644 index c678f92c8fa..00000000000 --- a/tests/robotests/src/com/android/settings/inputmethod/InputMethodPreferenceControllerTest.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright (C) 2019 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.Mockito.mock; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.when; - -import android.content.Context; -import android.view.inputmethod.InputMethodInfo; - -import androidx.preference.Preference; -import androidx.preference.PreferenceManager; -import androidx.preference.PreferenceScreen; - -import com.android.settings.testutils.shadow.ShadowInputMethodManagerWithMethodList; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.robolectric.RobolectricTestRunner; -import org.robolectric.RuntimeEnvironment; -import org.robolectric.annotation.Config; - -import java.util.ArrayList; -import java.util.List; - -@RunWith(RobolectricTestRunner.class) -@Config(shadows = ShadowInputMethodManagerWithMethodList.class) -public class InputMethodPreferenceControllerTest { - - private InputMethodPreferenceController mController; - private Context mContext; - private PreferenceScreen mScreen; - private Preference mPreference; - - @Before - public void setUp() { - mContext = RuntimeEnvironment.application; - mScreen = spy(new PreferenceScreen(mContext, null)); - mPreference = new Preference(mContext); - mController = new InputMethodPreferenceController(mContext, "key"); - - when(mScreen.getPreferenceManager()).thenReturn(mock(PreferenceManager.class)); - when(mScreen.getContext()).thenReturn(mContext); - when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference); - - mController.displayPreference(mScreen); - } - - @Test - public void onStart_NoInputMethod_shouldHaveOnePreference() { - mController.onStart(); - - assertThat(mScreen.getPreferenceCount()).isEqualTo(1); - } - - @Test - public void onStart_hasInputMethod_shouldHaveCorrectPreferences() { - final List imis = new ArrayList<>(); - imis.add(mock(InputMethodInfo.class)); - imis.add(mock(InputMethodInfo.class)); - when(imis.get(0).getPackageName()).thenReturn("name1"); - when(imis.get(1).getPackageName()).thenReturn("name2"); - ShadowInputMethodManagerWithMethodList.getShadow().setEnabledInputMethodList(imis); - - mController.onStart(); - - assertThat(mScreen.getPreferenceCount()).isEqualTo(3); - } -}