diff --git a/res/xml/top_level_settings_grouped.xml b/res/xml/top_level_settings_grouped.xml
new file mode 100644
index 00000000000..964c1980a0e
--- /dev/null
+++ b/res/xml/top_level_settings_grouped.xml
@@ -0,0 +1,183 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/com/android/settings/homepage/TopLevelSettings.java b/src/com/android/settings/homepage/TopLevelSettings.java
index 8a7f4bdf43f..47a46f2912f 100644
--- a/src/com/android/settings/homepage/TopLevelSettings.java
+++ b/src/com/android/settings/homepage/TopLevelSettings.java
@@ -22,12 +22,15 @@ import static com.android.settingslib.search.SearchIndexable.MOBILE;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.os.Bundle;
+import android.provider.SearchIndexableResource;
+import android.util.FeatureFlagUtils;
import androidx.fragment.app.Fragment;
import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;
import com.android.settings.R;
+import com.android.settings.core.FeatureFlags;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.search.BaseSearchIndexProvider;
@@ -35,6 +38,9 @@ import com.android.settings.support.SupportPreferenceController;
import com.android.settingslib.core.instrumentation.Instrumentable;
import com.android.settingslib.search.SearchIndexable;
+import java.util.Arrays;
+import java.util.List;
+
@SearchIndexable(forTarget = MOBILE)
public class TopLevelSettings extends DashboardFragment implements
PreferenceFragmentCompat.OnPreferenceStartFragmentCallback {
@@ -50,6 +56,9 @@ public class TopLevelSettings extends DashboardFragment implements
@Override
protected int getPreferenceScreenResId() {
+ if (FeatureFlagUtils.isEnabled(getContext(), FeatureFlags.SILKY_HOME)) {
+ return R.xml.top_level_settings_grouped;
+ }
return R.xml.top_level_settings;
}
@@ -100,7 +109,16 @@ public class TopLevelSettings extends DashboardFragment implements
}
public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
- new BaseSearchIndexProvider(R.xml.top_level_settings) {
+ new BaseSearchIndexProvider() {
+
+ @Override
+ public List getXmlResourcesToIndex(
+ Context context, boolean enabled) {
+ final SearchIndexableResource sir = new SearchIndexableResource(context);
+ sir.xmlResId = FeatureFlagUtils.isEnabled(context, FeatureFlags.SILKY_HOME)
+ ? R.xml.top_level_settings_grouped : R.xml.top_level_settings;
+ return Arrays.asList(sir);
+ }
@Override
protected boolean isPageSearchEnabled(Context context) {
diff --git a/tests/robotests/src/com/android/settings/homepage/TopLevelSettingsTest.java b/tests/robotests/src/com/android/settings/homepage/TopLevelSettingsTest.java
index 5a6ca86aa18..0cc6b434614 100644
--- a/tests/robotests/src/com/android/settings/homepage/TopLevelSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/homepage/TopLevelSettingsTest.java
@@ -22,6 +22,10 @@ import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
import android.content.Context;
+import android.util.FeatureFlagUtils;
+
+import com.android.settings.R;
+import com.android.settings.core.FeatureFlags;
import org.junit.Before;
import org.junit.Test;
@@ -45,4 +49,17 @@ public class TopLevelSettingsTest {
public void shouldForceRoundedIcon_true() {
assertThat(mSettings.shouldForceRoundedIcon()).isTrue();
}
+
+ @Test
+ public void getPreferenceScreenResId_silkyHomeDisabled_defaultSettings() {
+ FeatureFlagUtils.setEnabled(mContext, FeatureFlags.SILKY_HOME, false);
+ assertThat(mSettings.getPreferenceScreenResId()).isEqualTo(R.xml.top_level_settings);
+ }
+
+ @Test
+ public void getPreferenceScreenResId_silkyHomeEnabled_groupedSettings() {
+ FeatureFlagUtils.setEnabled(mContext, FeatureFlags.SILKY_HOME, true);
+ assertThat(mSettings.getPreferenceScreenResId()).isEqualTo(
+ R.xml.top_level_settings_grouped);
+ }
}