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 @@
         }
     }
 
-
 }