summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJuan Lang <juanlang@google.com>2017-06-01 14:40:19 -0700
committerJuan Lang <juanlang@google.com>2017-06-06 10:40:32 -0700
commitc6b8500a6f06db300c287d88d2952387d24429a2 (patch)
tree8571653a3bfc4cd50133ff675b21d3b3b47d28df /src
parent0e67a2c702400a13a620b713c64892b562bf6d9d (diff)
downloadandroid_packages_apps_EmergencyInfo-c6b8500a6f06db300c287d88d2952387d24429a2.tar.gz
android_packages_apps_EmergencyInfo-c6b8500a6f06db300c287d88d2952387d24429a2.tar.bz2
android_packages_apps_EmergencyInfo-c6b8500a6f06db300c287d88d2952387d24429a2.zip
Add a NameAutoCompletePreference robolectric test
Remove instrumentation tests that the robolectric tests cover. Also, add tests for name autocomplete suggestions. Test: make RunEmergencyInfoRoboTests && runtest --path packages/apps/EmergencyInfo/tests Change-Id: Ibd4745b50075bd39ab7f231ae8a07bc74d281b9f
Diffstat (limited to 'src')
-rw-r--r--src/com/android/emergency/preferences/NameAutoCompletePreference.java55
1 files changed, 53 insertions, 2 deletions
diff --git a/src/com/android/emergency/preferences/NameAutoCompletePreference.java b/src/com/android/emergency/preferences/NameAutoCompletePreference.java
index d03df27..7af25e5 100644
--- a/src/com/android/emergency/preferences/NameAutoCompletePreference.java
+++ b/src/com/android/emergency/preferences/NameAutoCompletePreference.java
@@ -17,11 +17,13 @@ package com.android.emergency.preferences;
import android.content.Context;
import android.os.UserManager;
+import android.support.annotation.Nullable;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.widget.ArrayAdapter;
import com.android.emergency.ReloadablePreferenceInterface;
+import com.android.internal.annotations.VisibleForTesting;
/**
* {@link AutoCompleteEditTextPreference} that prepopulates the edit text view with the name of the
@@ -29,16 +31,50 @@ import com.android.emergency.ReloadablePreferenceInterface;
*/
public class NameAutoCompletePreference extends AutoCompleteEditTextPreference implements
ReloadablePreferenceInterface {
+ private static final String[] EMPTY_STRING_ARRAY = new String[] {};
+
+ private final SuggestionProvider mSuggestionProvider;
+
public NameAutoCompletePreference(Context context, AttributeSet attrs) {
+ this(context, attrs, new SuggestionProvider() {
+ private final UserManager mUserManager =
+ (UserManager) context.getSystemService(Context.USER_SERVICE);
+
+ @Override
+ public boolean hasNameToSuggest() {
+ return mUserManager.isUserNameSet();
+ }
+
+ @Override
+ public String getNameSuggestion() {
+ if (!hasNameToSuggest()) {
+ return null;
+ }
+ return mUserManager.getUserName();
+ }
+ });
+ }
+
+ @VisibleForTesting
+ public NameAutoCompletePreference(Context context, AttributeSet attrs,
+ SuggestionProvider suggestionProvider) {
super(context, attrs);
+ mSuggestionProvider = suggestionProvider;
getAutoCompleteTextView().setAdapter(createAdapter());
}
+ @VisibleForTesting
+ public String[] createAutocompleteSuggestions() {
+ if (!mSuggestionProvider.hasNameToSuggest()) {
+ return EMPTY_STRING_ARRAY;
+ }
+ return new String[] {mSuggestionProvider.getNameSuggestion()};
+ }
+
private ArrayAdapter createAdapter() {
UserManager userManager =
(UserManager) getContext().getSystemService(Context.USER_SERVICE);
- String[] autocompleteSuggestions = userManager.isUserNameSet()
- ? new String[] {userManager.getUserName()} : new String[] {};
+ String[] autocompleteSuggestions = createAutocompleteSuggestions();
return new ArrayAdapter<String>(getContext(),
android.R.layout.simple_dropdown_item_1line, autocompleteSuggestions);
}
@@ -59,4 +95,19 @@ public class NameAutoCompletePreference extends AutoCompleteEditTextPreference i
String text = getText();
return TextUtils.isEmpty(text) ? super.getSummary() : text;
}
+
+ /**
+ * Interface for suggesting a name.
+ */
+ public interface SuggestionProvider {
+ /** @return whether this class has a name to suggest. */
+ boolean hasNameToSuggest();
+
+ /**
+ * Gets a suggested name.
+ * @return a suggest name, or {@code null} if there is no name to suggest.
+ */
+ @Nullable
+ String getNameSuggestion();
+ }
}