diff --git a/src/com/android/settings/homepage/TopLevelSettings.java b/src/com/android/settings/homepage/TopLevelSettings.java index 66428611a5b..99441b0cc50 100644 --- a/src/com/android/settings/homepage/TopLevelSettings.java +++ b/src/com/android/settings/homepage/TopLevelSettings.java @@ -33,7 +33,9 @@ import android.view.ViewGroup; import androidx.annotation.VisibleForTesting; import androidx.fragment.app.Fragment; import androidx.preference.Preference; +import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceFragmentCompat; +import androidx.preference.PreferenceGroup; import androidx.preference.PreferenceScreen; import androidx.recyclerview.widget.RecyclerView; import androidx.window.embedding.ActivityEmbeddingController; @@ -210,6 +212,9 @@ public class TopLevelSettings extends DashboardFragment implements SplitLayoutLi @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { super.onCreatePreferences(savedInstanceState, rootKey); + if (Flags.homepageRevamp()) { + return; + } int tintColor = Utils.getHomepageIconColor(getContext()); iteratePreferences(preference -> { Drawable icon = preference.getIcon(); @@ -364,13 +369,17 @@ public class TopLevelSettings extends DashboardFragment implements SplitLayoutLi } job.init(); - int count = screen.getPreferenceCount(); + iteratePreferences(screen, job); + } + + private void iteratePreferences(PreferenceGroup group, PreferenceJob job) { + int count = group.getPreferenceCount(); for (int i = 0; i < count; i++) { - Preference preference = screen.getPreference(i); - if (preference == null) { - break; - } + Preference preference = group.getPreference(i); job.doForEach(preference); + if (preference instanceof PreferenceCategory) { + iteratePreferences((PreferenceCategory) preference, job); + } } } diff --git a/tests/robotests/src/com/android/settings/homepage/TopLevelSettingsTest.java b/tests/robotests/src/com/android/settings/homepage/TopLevelSettingsTest.java index 36c48e3cdd7..aedb9224b2c 100644 --- a/tests/robotests/src/com/android/settings/homepage/TopLevelSettingsTest.java +++ b/tests/robotests/src/com/android/settings/homepage/TopLevelSettingsTest.java @@ -26,15 +26,19 @@ import static org.mockito.Mockito.when; import android.content.Context; import android.graphics.drawable.Drawable; import android.os.Bundle; +import android.platform.test.annotations.DisableFlags; +import android.platform.test.flag.junit.SetFlagsRule; import androidx.preference.Preference; import androidx.preference.PreferenceManager; import androidx.preference.PreferenceScreen; import com.android.settings.R; +import com.android.settings.flags.Flags; import com.android.settings.testutils.FakeFeatureFactory; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; @@ -42,6 +46,8 @@ import org.robolectric.RuntimeEnvironment; @RunWith(RobolectricTestRunner.class) public class TopLevelSettingsTest { + @Rule + public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(); private Context mContext; private TopLevelSettings mSettings; @@ -58,6 +64,7 @@ public class TopLevelSettingsTest { } @Test + @DisableFlags(Flags.FLAG_HOMEPAGE_REVAMP) public void onCreatePreferences_shouldTintPreferenceIcon() { final Preference preference = new Preference(mContext); preference.setTitle(R.string.network_dashboard_title);