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

Commit 427e19e0 authored by Doris Ling's avatar Doris Ling
Browse files

Fix NullPointerException in CustomEditTextPreference.

- check for valid dialog in getEditText() when trying to retrieve the
edit view from the dialog.

Change-Id: Ia8e2273ab0f3d75567ab16e1175bef88f7516a5d
Fixes: 69281837
Test: make RunSettingsLibRoboTests
parent a379f499
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -49,8 +49,13 @@ public class CustomEditTextPreference extends EditTextPreference {
    }

    public EditText getEditText() {
        return mFragment != null ? (EditText) mFragment.getDialog().findViewById(android.R.id.edit)
                : null;
        if (mFragment != null) {
            final Dialog dialog = mFragment.getDialog();
            if (dialog != null) {
                return (EditText) dialog.findViewById(android.R.id.edit);
            }
        }
        return null;
    }

    public boolean isDialogOpen() {
+12 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.settingslib;

import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -31,6 +32,7 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.util.ReflectionHelpers;

@RunWith(SettingsLibRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
@@ -59,6 +61,16 @@ public class CustomEditTextPreferenceTest {
        verify(editText).requestFocus();
    }

    @Test
    public void getEditText_noDialog_shouldNotCrash() {
        ReflectionHelpers.setField(mPreference, "mFragment",
                mock(CustomEditTextPreference.CustomPreferenceDialogFragment.class));

        mPreference.getEditText();

        // no crash
    }

    private static class TestPreference extends CustomEditTextPreference {
        public TestPreference(Context context) {
            super(context);