Loading src/com/android/settings/widget/ValidatedEditTextPreference.java +13 −10 Original line number Diff line number Diff line Loading @@ -21,8 +21,10 @@ import android.content.Context; import android.support.annotation.VisibleForTesting; import android.text.Editable; import android.text.InputType; import android.text.TextUtils; import android.text.TextWatcher; import android.util.AttributeSet; import android.util.Log; import android.view.View; import android.widget.EditText; Loading Loading @@ -61,9 +63,11 @@ public class ValidatedEditTextPreference extends CustomEditTextPreference { @Override protected void onBindDialogView(View view) { super.onBindDialogView(view); if (mValidator != null) { final EditText editText = view.findViewById(android.R.id.edit); if (editText != null) { if (editText != null && !TextUtils.isEmpty(editText.getText())) { editText.setSelection(editText.getText().length()); } if (mValidator != null && editText != null) { editText.removeTextChangedListener(mTextWatcher); if (mIsPassword) { editText.setInputType( Loading @@ -73,7 +77,6 @@ public class ValidatedEditTextPreference extends CustomEditTextPreference { editText.addTextChangedListener(mTextWatcher); } } } public void setIsPassword(boolean isPassword) { mIsPassword = isPassword; Loading tests/robotests/src/com/android/settings/widget/ValidatedEditTextPreferenceTest.java +30 −3 Original line number Diff line number Diff line Loading @@ -35,9 +35,10 @@ import org.robolectric.annotation.Config; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyZeroInteractions; import static org.mockito.Mockito.when; @RunWith(SettingsRobolectricTestRunner.class) Loading @@ -58,10 +59,36 @@ public class ValidatedEditTextPreferenceTest { } @Test public void bindDialogView_noTextWatcher_shouldDoNothing() { public void bindDialogView_nullEditText_shouldNotCrash() { when(mView.findViewById(android.R.id.edit)).thenReturn(null); // should not crash trying to get the EditText text mPreference.onBindDialogView(mView); } @Test public void bindDialogView_emptyEditText_shouldNotSetSelection() { final String testText = ""; final EditText editText = spy(new EditText(RuntimeEnvironment.application)); editText.setText(testText); when(mView.findViewById(android.R.id.edit)).thenReturn(editText); mPreference.onBindDialogView(mView); // no need to setSelection if text was empty verify(editText, never()).setSelection(anyInt()); } @Test public void bindDialogView_nonemptyEditText_shouldSetSelection() { final String testText = "whatever"; final EditText editText = spy(new EditText(RuntimeEnvironment.application)); editText.setText(testText); when(mView.findViewById(android.R.id.edit)).thenReturn(editText); mPreference.onBindDialogView(mView); verifyZeroInteractions(mView); // selection should be set to end of string verify(editText).setSelection(testText.length()); } @Test Loading Loading
src/com/android/settings/widget/ValidatedEditTextPreference.java +13 −10 Original line number Diff line number Diff line Loading @@ -21,8 +21,10 @@ import android.content.Context; import android.support.annotation.VisibleForTesting; import android.text.Editable; import android.text.InputType; import android.text.TextUtils; import android.text.TextWatcher; import android.util.AttributeSet; import android.util.Log; import android.view.View; import android.widget.EditText; Loading Loading @@ -61,9 +63,11 @@ public class ValidatedEditTextPreference extends CustomEditTextPreference { @Override protected void onBindDialogView(View view) { super.onBindDialogView(view); if (mValidator != null) { final EditText editText = view.findViewById(android.R.id.edit); if (editText != null) { if (editText != null && !TextUtils.isEmpty(editText.getText())) { editText.setSelection(editText.getText().length()); } if (mValidator != null && editText != null) { editText.removeTextChangedListener(mTextWatcher); if (mIsPassword) { editText.setInputType( Loading @@ -73,7 +77,6 @@ public class ValidatedEditTextPreference extends CustomEditTextPreference { editText.addTextChangedListener(mTextWatcher); } } } public void setIsPassword(boolean isPassword) { mIsPassword = isPassword; Loading
tests/robotests/src/com/android/settings/widget/ValidatedEditTextPreferenceTest.java +30 −3 Original line number Diff line number Diff line Loading @@ -35,9 +35,10 @@ import org.robolectric.annotation.Config; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyZeroInteractions; import static org.mockito.Mockito.when; @RunWith(SettingsRobolectricTestRunner.class) Loading @@ -58,10 +59,36 @@ public class ValidatedEditTextPreferenceTest { } @Test public void bindDialogView_noTextWatcher_shouldDoNothing() { public void bindDialogView_nullEditText_shouldNotCrash() { when(mView.findViewById(android.R.id.edit)).thenReturn(null); // should not crash trying to get the EditText text mPreference.onBindDialogView(mView); } @Test public void bindDialogView_emptyEditText_shouldNotSetSelection() { final String testText = ""; final EditText editText = spy(new EditText(RuntimeEnvironment.application)); editText.setText(testText); when(mView.findViewById(android.R.id.edit)).thenReturn(editText); mPreference.onBindDialogView(mView); // no need to setSelection if text was empty verify(editText, never()).setSelection(anyInt()); } @Test public void bindDialogView_nonemptyEditText_shouldSetSelection() { final String testText = "whatever"; final EditText editText = spy(new EditText(RuntimeEnvironment.application)); editText.setText(testText); when(mView.findViewById(android.R.id.edit)).thenReturn(editText); mPreference.onBindDialogView(mView); verifyZeroInteractions(mView); // selection should be set to end of string verify(editText).setSelection(testText.length()); } @Test Loading