Recursively find preference in progressive disclosure.
Add handling to check for nested preference when finding preference in the collapsed list. Change-Id: I830bdd5fd99f09c505f41fd3bb2fa968eb9b13cf Fix: 35363405 Test: make RunSettingsRoboTests
This commit is contained in:
@@ -21,6 +21,7 @@ import android.os.Bundle;
|
|||||||
import android.support.annotation.VisibleForTesting;
|
import android.support.annotation.VisibleForTesting;
|
||||||
import android.support.v14.preference.PreferenceFragment;
|
import android.support.v14.preference.PreferenceFragment;
|
||||||
import android.support.v7.preference.Preference;
|
import android.support.v7.preference.Preference;
|
||||||
|
import android.support.v7.preference.PreferenceGroup;
|
||||||
import android.support.v7.preference.PreferenceScreen;
|
import android.support.v7.preference.PreferenceScreen;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
@@ -219,6 +220,12 @@ public class ProgressiveDisclosureMixin implements Preference.OnPreferenceClickL
|
|||||||
if (TextUtils.equals(key, pref.getKey())) {
|
if (TextUtils.equals(key, pref.getKey())) {
|
||||||
return pref;
|
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);
|
Log.d(TAG, "Cannot find preference with key " + key);
|
||||||
return null;
|
return null;
|
||||||
|
@@ -19,6 +19,7 @@ package com.android.settings.dashboard;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.support.v14.preference.PreferenceFragment;
|
import android.support.v14.preference.PreferenceFragment;
|
||||||
import android.support.v7.preference.Preference;
|
import android.support.v7.preference.Preference;
|
||||||
|
import android.support.v7.preference.PreferenceManager;
|
||||||
import android.support.v7.preference.PreferenceScreen;
|
import android.support.v7.preference.PreferenceScreen;
|
||||||
|
|
||||||
import com.android.settings.R;
|
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.anyInt;
|
||||||
import static org.mockito.Matchers.anyString;
|
import static org.mockito.Matchers.anyString;
|
||||||
import static org.mockito.Mockito.atLeastOnce;
|
import static org.mockito.Mockito.atLeastOnce;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.never;
|
import static org.mockito.Mockito.never;
|
||||||
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.times;
|
import static org.mockito.Mockito.times;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
@@ -141,6 +144,22 @@ public class ProgressiveDisclosureTest {
|
|||||||
assertThat(pref).isNull();
|
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
|
@Test
|
||||||
public void removePreference_shouldRemoveOnScreenPreference() {
|
public void removePreference_shouldRemoveOnScreenPreference() {
|
||||||
when(mScreen.findPreference(mPreference.getKey())).thenReturn(mPreference);
|
when(mScreen.findPreference(mPreference.getKey())).thenReturn(mPreference);
|
||||||
|
Reference in New Issue
Block a user