diff --git a/src/com/android/settings/dashboard/DashboardFragment.java b/src/com/android/settings/dashboard/DashboardFragment.java index e0c9820042a..1b2be809a6d 100644 --- a/src/com/android/settings/dashboard/DashboardFragment.java +++ b/src/com/android/settings/dashboard/DashboardFragment.java @@ -39,11 +39,13 @@ import com.android.settings.core.BasePreferenceController; import com.android.settings.core.FeatureFlags; import com.android.settings.core.PreferenceControllerListHelper; import com.android.settings.core.SettingsBaseActivity; +import com.android.settings.homepage.HomepagePreference; import com.android.settings.overlay.FeatureFactory; import com.android.settings.widget.PrimarySwitchPreference; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; +import com.android.settingslib.drawer.CategoryKey; import com.android.settingslib.drawer.DashboardCategory; import com.android.settingslib.drawer.ProviderTile; import com.android.settingslib.drawer.Tile; @@ -536,6 +538,10 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment @VisibleForTesting Preference createPreference(Tile tile) { + if (FeatureFlagUtils.isEnabled(getContext(), FeatureFlags.SILKY_HOME) + && TextUtils.equals(tile.getCategory(), CategoryKey.CATEGORY_HOMEPAGE)) { + return new HomepagePreference(getPrefContext()); + } return tile instanceof ProviderTile ? new SwitchPreference(getPrefContext()) : tile.hasSwitch() diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java index efc72633354..9d7d7460114 100644 --- a/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java +++ b/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java @@ -48,6 +48,7 @@ import androidx.preference.SwitchPreference; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.core.FeatureFlags; import com.android.settings.core.PreferenceControllerMixin; +import com.android.settings.homepage.HomepagePreference; import com.android.settings.slices.BlockingSlicePrefController; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.widget.PrimarySwitchPreference; @@ -55,6 +56,7 @@ import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.core.instrumentation.VisibilityLoggerMixin; import com.android.settingslib.drawer.ActivityTile; +import com.android.settingslib.drawer.CategoryKey; import com.android.settingslib.drawer.DashboardCategory; import com.android.settingslib.drawer.ProviderTile; @@ -335,6 +337,16 @@ public class DashboardFragmentTest { assertThat(pref).isInstanceOf(PrimarySwitchPreference.class); } + @Test + public void createPreference_isHomepageTile_returnHomepagePreference() { + FeatureFlagUtils.setEnabled(mContext, FeatureFlags.SILKY_HOME, true); + mActivityTile.setCategory(CategoryKey.CATEGORY_HOMEPAGE); + + final Preference pref = mTestFragment.createPreference(mActivityTile); + + assertThat(pref).isInstanceOf(HomepagePreference.class); + } + @Test public void isFeatureFlagAndIsParalleled_runParalleledUpdatePreferenceStates() { FeatureFlagUtils.setEnabled(mContext, FeatureFlags.CONTROLLER_ENHANCEMENT, true);