Merge "Expand all preferences when launch from search."
diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java
index a3d26af..f265f98 100644
--- a/src/com/android/settings/SettingsPreferenceFragment.java
+++ b/src/com/android/settings/SettingsPreferenceFragment.java
@@ -150,8 +150,8 @@
}
// 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 @@
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 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 dc4166d..aa92ebb 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,19 +39,19 @@
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
private View mListContainer;
@@ -142,6 +142,21 @@
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 @@
}
}
-
}