From 6589a07d5915d8bcc911ddf36054549a7cc1a219 Mon Sep 17 00:00:00 2001 From: Doris Ling Date: Thu, 9 Nov 2017 14:36:51 -0800 Subject: [PATCH] Expand all preferences when launch from search. - when the fragment is created, checks the argument to see if the extra fragment arg key is set. If so, do not hide the preferences in the advanced button. Change-Id: Id662ae1cec77edad7fcd5d6daa71929a8cb1402c Fixes: 68988454 Test: make RunSettingsRoboTests --- .../settings/SettingsPreferenceFragment.java | 16 +++++++++---- .../SettingsPreferenceFragmentTest.java | 24 +++++++++++++++---- 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java index a3d26af8eb7..f265f9892f8 100644 --- a/src/com/android/settings/SettingsPreferenceFragment.java +++ b/src/com/android/settings/SettingsPreferenceFragment.java @@ -150,8 +150,8 @@ public abstract class SettingsPreferenceFragment extends InstrumentedPreferenceF } // Prepare help url and enable menu if necessary - Bundle arguments = getArguments(); - int helpResource; + final Bundle arguments = getArguments(); + final int helpResource; if (arguments != null && arguments.containsKey(HELP_URI_RESOURCE_KEY)) { helpResource = arguments.getInt(HELP_URI_RESOURCE_KEY); } else { @@ -160,6 +160,14 @@ public abstract class SettingsPreferenceFragment extends InstrumentedPreferenceF if (helpResource != 0) { mHelpUri = getResources().getString(helpResource); } + + // Check if we should keep the preferences expanded. + if (arguments != null) { + mPreferenceKey = arguments.getString(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY); + if (!TextUtils.isEmpty(mPreferenceKey)) { + getPreferenceScreen().setInitialExpandedChildrenCount(Integer.MAX_VALUE); + } + } } @Override @@ -224,9 +232,7 @@ public abstract class SettingsPreferenceFragment extends InstrumentedPreferenceF public void onResume() { super.onResume(); - final Bundle args = getArguments(); - if (args != null) { - mPreferenceKey = args.getString(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY); + if (mPreferenceKey != null) { highlightPreferenceIfNeeded(); } } diff --git a/tests/robotests/src/com/android/settings/SettingsPreferenceFragmentTest.java b/tests/robotests/src/com/android/settings/SettingsPreferenceFragmentTest.java index dc4166d7eb3..aa92ebb4975 100644 --- a/tests/robotests/src/com/android/settings/SettingsPreferenceFragmentTest.java +++ b/tests/robotests/src/com/android/settings/SettingsPreferenceFragmentTest.java @@ -16,9 +16,9 @@ package com.android.settings; - import android.app.Activity; import android.content.Context; +import android.os.Bundle; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceCategory; import android.support.v7.preference.PreferenceManager; @@ -39,18 +39,18 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import com.android.settings.testutils.SettingsRobolectricTestRunner; +import com.android.settings.testutils.shadow.SettingsShadowResources; @RunWith(SettingsRobolectricTestRunner.class) -@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) +@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION_O) public class SettingsPreferenceFragmentTest { private static final int ITEM_COUNT = 5; - @Mock - private PreferenceManager mPreferenceManager; @Mock private Activity mActivity; @Mock @@ -142,6 +142,21 @@ public class SettingsPreferenceFragmentTest { assertThat(mEmptyView.getVisibility()).isEqualTo(View.GONE); } + @Test + @Config(shadows = SettingsShadowResources.SettingsShadowTheme.class) + public void onCreate_hasExtraFragmentKey_shouldExpandPreferences() { + doReturn(mContext.getTheme()).when(mActivity).getTheme(); + doReturn(mContext.getResources()).when(mFragment).getResources(); + doReturn(mPreferenceScreen).when(mFragment).getPreferenceScreen(); + final Bundle bundle = new Bundle(); + bundle.putString(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY, "test_key"); + doReturn(bundle).when(mFragment).getArguments(); + + mFragment.onCreate(null /* icicle */); + + verify(mPreferenceScreen).setInitialExpandedChildrenCount(Integer.MAX_VALUE); + } + public static class TestFragment extends SettingsPreferenceFragment { @Override @@ -150,5 +165,4 @@ public class SettingsPreferenceFragmentTest { } } - }