Loading res/drawable/ic_network_cell.xml +1 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ limitations under the License. --> <vector xmlns:android="http://schemas.android.com/apk/res/android" android:autoMirrored="true" android:width="24dp" android:height="24dp" android:viewportWidth="24.0" Loading src/com/android/settings/inputmethod/UserDictionaryList.java +12 −7 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.content.Intent; import android.database.Cursor; import android.os.Bundle; import android.provider.UserDictionary; import android.support.annotation.NonNull; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceGroup; import android.text.TextUtils; Loading Loading @@ -78,14 +79,15 @@ public class UserDictionaryList extends SettingsPreferenceFragment { mLocale = locale; } @NonNull public static TreeSet<String> getUserDictionaryLocalesSet(Context context) { final Cursor cursor = context.getContentResolver().query( UserDictionary.Words.CONTENT_URI, new String[]{UserDictionary.Words.LOCALE}, null, null, null); final TreeSet<String> localeSet = new TreeSet<String>(); if (null == cursor) { // The user dictionary service is not present or disabled. Return null. return null; final TreeSet<String> localeSet = new TreeSet<>(); if (cursor == null) { // The user dictionary service is not present or disabled. Return empty set. return localeSet; } try { if (cursor.moveToFirst()) { Loading Loading @@ -134,6 +136,7 @@ public class UserDictionaryList extends SettingsPreferenceFragment { /** * Creates the entries that allow the user to go into the user dictionary for each locale. * * @param userDictGroup The group to put the settings in. */ protected void createUserDictSettings(PreferenceGroup userDictGroup) { Loading Loading @@ -163,6 +166,7 @@ public class UserDictionaryList extends SettingsPreferenceFragment { /** * Create a single User Dictionary Preference object, with its parameters set. * * @param locale The locale for which this user dictionary is for. * @return The corresponding preference. */ Loading @@ -172,10 +176,11 @@ public class UserDictionaryList extends SettingsPreferenceFragment { if (null == locale) { newPref.setTitle(Locale.getDefault().getDisplayName()); } else { if ("".equals(locale)) if ("".equals(locale)) { newPref.setTitle(getString(R.string.user_dict_settings_all_languages)); else } else { newPref.setTitle(Utils.createLocaleFromString(locale).getDisplayName()); } intent.putExtra("locale", locale); newPref.getExtras().putString("locale", locale); } Loading tests/robotests/src/com/android/settings/inputmethod/UserDictionaryListTest.java 0 → 100644 +104 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 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 android.content.ContentProvider; import android.content.ContentValues; import android.database.Cursor; import android.database.MatrixCursor; import android.net.Uri; import android.provider.UserDictionary; import com.android.settings.TestConfig; import com.android.settings.testutils.SettingsRobolectricTestRunner; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowContentResolver; @RunWith(SettingsRobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) public class UserDictionaryListTest { private FakeProvider mContentProvider; @Before public void setUp() { MockitoAnnotations.initMocks(this); mContentProvider = new FakeProvider(); ShadowContentResolver.registerProvider(UserDictionary.AUTHORITY, mContentProvider); } @Test public void getUserDictionaryLocalesSet_noLocale_shouldReturnEmptySet() { mContentProvider.hasDictionary = false; assertThat(UserDictionaryList.getUserDictionaryLocalesSet(RuntimeEnvironment.application)) .isEmpty(); } public static class FakeProvider extends ContentProvider { public boolean hasDictionary = true; @Override public boolean onCreate() { return false; } @Override public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { if (hasDictionary) { final MatrixCursor cursor = new MatrixCursor( new String[]{UserDictionary.Words.LOCALE}); cursor.addRow(new Object[]{"en"}); cursor.addRow(new Object[]{"es"}); return cursor; } else { return null; } } @Override public String getType(Uri uri) { return null; } @Override public Uri insert(Uri uri, ContentValues values) { return null; } @Override public int delete(Uri uri, String selection, String[] selectionArgs) { return 0; } @Override public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { return 0; } } } Loading
res/drawable/ic_network_cell.xml +1 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ limitations under the License. --> <vector xmlns:android="http://schemas.android.com/apk/res/android" android:autoMirrored="true" android:width="24dp" android:height="24dp" android:viewportWidth="24.0" Loading
src/com/android/settings/inputmethod/UserDictionaryList.java +12 −7 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.content.Intent; import android.database.Cursor; import android.os.Bundle; import android.provider.UserDictionary; import android.support.annotation.NonNull; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceGroup; import android.text.TextUtils; Loading Loading @@ -78,14 +79,15 @@ public class UserDictionaryList extends SettingsPreferenceFragment { mLocale = locale; } @NonNull public static TreeSet<String> getUserDictionaryLocalesSet(Context context) { final Cursor cursor = context.getContentResolver().query( UserDictionary.Words.CONTENT_URI, new String[]{UserDictionary.Words.LOCALE}, null, null, null); final TreeSet<String> localeSet = new TreeSet<String>(); if (null == cursor) { // The user dictionary service is not present or disabled. Return null. return null; final TreeSet<String> localeSet = new TreeSet<>(); if (cursor == null) { // The user dictionary service is not present or disabled. Return empty set. return localeSet; } try { if (cursor.moveToFirst()) { Loading Loading @@ -134,6 +136,7 @@ public class UserDictionaryList extends SettingsPreferenceFragment { /** * Creates the entries that allow the user to go into the user dictionary for each locale. * * @param userDictGroup The group to put the settings in. */ protected void createUserDictSettings(PreferenceGroup userDictGroup) { Loading Loading @@ -163,6 +166,7 @@ public class UserDictionaryList extends SettingsPreferenceFragment { /** * Create a single User Dictionary Preference object, with its parameters set. * * @param locale The locale for which this user dictionary is for. * @return The corresponding preference. */ Loading @@ -172,10 +176,11 @@ public class UserDictionaryList extends SettingsPreferenceFragment { if (null == locale) { newPref.setTitle(Locale.getDefault().getDisplayName()); } else { if ("".equals(locale)) if ("".equals(locale)) { newPref.setTitle(getString(R.string.user_dict_settings_all_languages)); else } else { newPref.setTitle(Utils.createLocaleFromString(locale).getDisplayName()); } intent.putExtra("locale", locale); newPref.getExtras().putString("locale", locale); } Loading
tests/robotests/src/com/android/settings/inputmethod/UserDictionaryListTest.java 0 → 100644 +104 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 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 android.content.ContentProvider; import android.content.ContentValues; import android.database.Cursor; import android.database.MatrixCursor; import android.net.Uri; import android.provider.UserDictionary; import com.android.settings.TestConfig; import com.android.settings.testutils.SettingsRobolectricTestRunner; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowContentResolver; @RunWith(SettingsRobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) public class UserDictionaryListTest { private FakeProvider mContentProvider; @Before public void setUp() { MockitoAnnotations.initMocks(this); mContentProvider = new FakeProvider(); ShadowContentResolver.registerProvider(UserDictionary.AUTHORITY, mContentProvider); } @Test public void getUserDictionaryLocalesSet_noLocale_shouldReturnEmptySet() { mContentProvider.hasDictionary = false; assertThat(UserDictionaryList.getUserDictionaryLocalesSet(RuntimeEnvironment.application)) .isEmpty(); } public static class FakeProvider extends ContentProvider { public boolean hasDictionary = true; @Override public boolean onCreate() { return false; } @Override public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { if (hasDictionary) { final MatrixCursor cursor = new MatrixCursor( new String[]{UserDictionary.Words.LOCALE}); cursor.addRow(new Object[]{"en"}); cursor.addRow(new Object[]{"es"}); return cursor; } else { return null; } } @Override public String getType(Uri uri) { return null; } @Override public Uri insert(Uri uri, ContentValues values) { return null; } @Override public int delete(Uri uri, String selection, String[] selectionArgs) { return 0; } @Override public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { return 0; } } }