Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b8ff97fb authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix focus behavior of ValidatedEditTextPreference" into oc-mr1-dev

parents 9a3cb9b8 9be8c3fb
Loading
Loading
Loading
Loading
+13 −10
Original line number Diff line number Diff line
@@ -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;

@@ -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(
@@ -73,7 +77,6 @@ public class ValidatedEditTextPreference extends CustomEditTextPreference {
            editText.addTextChangedListener(mTextWatcher);
        }
    }
    }

    public void setIsPassword(boolean isPassword) {
        mIsPassword = isPassword;
+30 −3
Original line number Diff line number Diff line
@@ -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)
@@ -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