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

Commit d33651cf authored by Doris Ling's avatar Doris Ling Committed by Android (Google) Code Review
Browse files

Merge "Recursively find preference in progressive disclosure."

parents e3aade4a 493fd4e6
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.os.Bundle;
import android.support.annotation.VisibleForTesting;
import android.support.v14.preference.PreferenceFragment;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceGroup;
import android.support.v7.preference.PreferenceScreen;
import android.text.TextUtils;
import android.util.Log;
@@ -219,6 +220,12 @@ public class ProgressiveDisclosureMixin implements Preference.OnPreferenceClickL
            if (TextUtils.equals(key, pref.getKey())) {
                return pref;
            }
            if (pref instanceof PreferenceGroup) {
                final Preference returnedPreference = ((PreferenceGroup)pref).findPreference(key);
                if (returnedPreference != null) {
                    return returnedPreference;
                }
            }
        }
        Log.d(TAG, "Cannot find preference with key " + key);
        return null;
+19 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.settings.dashboard;
import android.content.Context;
import android.support.v14.preference.PreferenceFragment;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceManager;
import android.support.v7.preference.PreferenceScreen;

import com.android.settings.R;
@@ -44,7 +45,9 @@ import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -141,6 +144,22 @@ public class ProgressiveDisclosureTest {
        assertThat(pref).isNull();
    }

    @Test
    public void findPreference_nestedPrefInCollapsedList_shouldFindIt() {
        when(mScreen.findPreference(anyString())).thenReturn(null);
        final PreferenceScreen prefGroup = spy(new PreferenceScreen(mAppContext, null));
        when(prefGroup.getPreferenceManager()).thenReturn(mock(PreferenceManager.class));
        final Preference preference = mock(Preference.class);
        when(preference.getKey()).thenReturn("TestKey");
        prefGroup.addPreference(preference);
        mMixin.addToCollapsedList(prefGroup);

        Preference pref = mMixin.findPreference(mScreen, "TestKey");

        assertThat(pref).isNotNull();
        assertThat(pref).isSameAs(preference);
    }

    @Test
    public void removePreference_shouldRemoveOnScreenPreference() {
        when(mScreen.findPreference(mPreference.getKey())).thenReturn(mPreference);