Merge cherrypicks of [3094267, 3095329, 3095257, 3095367] into pi-release
Change-Id: I5bfbf0e26a0e9229f26c34da8960a2ad5b0a3829
diff --git a/src/com/android/emergency/edit/EditMedicalInfoFragment.java b/src/com/android/emergency/edit/EditMedicalInfoFragment.java
index 6783972..1b0e3a3 100644
--- a/src/com/android/emergency/edit/EditMedicalInfoFragment.java
+++ b/src/com/android/emergency/edit/EditMedicalInfoFragment.java
@@ -29,6 +29,7 @@
import com.android.emergency.util.PreferenceUtils;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
+import com.android.settingslib.CustomEditTextPreference;
/**
* Fragment that displays personal and medical information.
@@ -76,15 +77,20 @@
@Override
public void onDisplayPreferenceDialog(Preference preference) {
- if (!(preference instanceof AutoCompleteEditTextPreference)) {
- super.onDisplayPreferenceDialog(preference);
- return;
+ DialogFragment fragment = null;
+ if (preference instanceof CustomEditTextPreference) {
+ fragment = CustomEditTextPreference.CustomPreferenceDialogFragment
+ .newInstance(preference.getKey());
+ } else if (preference instanceof AutoCompleteEditTextPreference) {
+ fragment = AutoCompleteEditTextPreference.AutoCompleteEditTextPreferenceDialogFragment
+ .newInstance(preference.getKey());
}
- DialogFragment fragment =
- AutoCompleteEditTextPreference.AutoCompleteEditTextPreferenceDialogFragment
- .newInstance(preference.getKey());
- fragment.setTargetFragment(this, 0);
- fragment.show(getFragmentManager(), "dialog_preference");
+ if (fragment != null) {
+ fragment.setTargetFragment(this, 0);
+ fragment.show(getFragmentManager(), "dialog_preference");
+ } else {
+ super.onDisplayPreferenceDialog(preference);
+ }
}
/** Reloads all the preferences by reading the value from the shared preferences. */
diff --git a/src/com/android/emergency/preferences/AutoCompleteEditTextPreference.java b/src/com/android/emergency/preferences/AutoCompleteEditTextPreference.java
index 3796c94..d9e2b26 100644
--- a/src/com/android/emergency/preferences/AutoCompleteEditTextPreference.java
+++ b/src/com/android/emergency/preferences/AutoCompleteEditTextPreference.java
@@ -142,6 +142,7 @@
AutoCompleteTextView editText = mAutoCompleteTextView;
editText.setText(getText());
+ editText.requestFocus();
ViewParent oldParent = editText.getParent();
if (oldParent != view) {
diff --git a/src/com/android/emergency/preferences/EmergencyEditTextPreference.java b/src/com/android/emergency/preferences/EmergencyEditTextPreference.java
index 1511055..7a6cfe5 100644
--- a/src/com/android/emergency/preferences/EmergencyEditTextPreference.java
+++ b/src/com/android/emergency/preferences/EmergencyEditTextPreference.java
@@ -22,6 +22,7 @@
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.View;
+import android.widget.EditText;
import android.widget.TextView;
import com.android.emergency.R;
@@ -80,6 +81,7 @@
@Override
protected void onBindDialogView(View view) {
super.onBindDialogView(view);
- getEditText().setSelection(getEditText().getText().length());
+ final EditText editText = view.findViewById(android.R.id.edit);
+ editText.setSelection(editText.getText().length());
}
}
diff --git a/tests/robolectric/src/com/android/emergency/preferences/NameAutoCompletePreferenceTest.java b/tests/robolectric/src/com/android/emergency/preferences/NameAutoCompletePreferenceTest.java
index 305010a..c191325 100644
--- a/tests/robolectric/src/com/android/emergency/preferences/NameAutoCompletePreferenceTest.java
+++ b/tests/robolectric/src/com/android/emergency/preferences/NameAutoCompletePreferenceTest.java
@@ -17,8 +17,10 @@
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.eq;
+import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.nullable;
import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.content.Context;
@@ -26,7 +28,8 @@
import android.support.v7.preference.PreferenceGroup;
import android.support.v7.preference.PreferenceManager;
import android.support.v7.preference.PreferenceScreen;
-import android.test.suitebuilder.annotation.SmallTest;
+import android.text.Editable;
+import android.view.View;
import android.widget.AutoCompleteTextView;
import com.android.emergency.PreferenceKeys;
@@ -40,9 +43,9 @@
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
+import org.robolectric.util.ReflectionHelpers;
/** Unit tests for {@link NameAutoCompletePreference}. */
-@SmallTest
@RunWith(RobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
public class NameAutoCompletePreferenceTest {
@@ -116,4 +119,17 @@
when(mAutoCompleteSuggestionProvider.getNameSuggestion()).thenReturn(name);
assertThat(mPreference.createAutocompleteSuggestions()).isEqualTo(new String[] {name});
}
+
+ @Test
+ public void testBindDialog_shouldFocusOnEditText() {
+ final AutoCompleteTextView editText = mock(AutoCompleteTextView.class);
+ final Editable text = mock(Editable.class);
+ when(editText.getText()).thenReturn(text);
+ when(text.length()).thenReturn(0);
+ ReflectionHelpers.setField(mPreference, "mAutoCompleteTextView", editText);
+
+ mPreference.onBindDialogView(mock(View.class));
+
+ verify(editText).requestFocus();
+ }
}