diff options
author | Juan Lang <juanlang@google.com> | 2017-06-01 14:40:19 -0700 |
---|---|---|
committer | Juan Lang <juanlang@google.com> | 2017-06-06 10:40:32 -0700 |
commit | c6b8500a6f06db300c287d88d2952387d24429a2 (patch) | |
tree | 8571653a3bfc4cd50133ff675b21d3b3b47d28df /src | |
parent | 0e67a2c702400a13a620b713c64892b562bf6d9d (diff) | |
download | android_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.java | 55 |
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(); + } } |