Use new homepage preference for injected IAs

We use homepage preference when it's a injected IAs on homepage

Test: See the screenshot for Google icons
Fix: 177213699
Change-Id: Ibd08ff305cdd6b556b5ceee486df01678c9212a6
This commit is contained in:
Tsung-Mao Fang
2021-01-13 15:27:48 +08:00
committed by Yanting Yang
parent 78c6656981
commit 8b1b0dc0c3
2 changed files with 18 additions and 0 deletions

View File

@@ -39,11 +39,13 @@ import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.FeatureFlags; import com.android.settings.core.FeatureFlags;
import com.android.settings.core.PreferenceControllerListHelper; import com.android.settings.core.PreferenceControllerListHelper;
import com.android.settings.core.SettingsBaseActivity; import com.android.settings.core.SettingsBaseActivity;
import com.android.settings.homepage.HomepagePreference;
import com.android.settings.overlay.FeatureFactory; import com.android.settings.overlay.FeatureFactory;
import com.android.settings.widget.PrimarySwitchPreference; import com.android.settings.widget.PrimarySwitchPreference;
import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.drawer.CategoryKey;
import com.android.settingslib.drawer.DashboardCategory; import com.android.settingslib.drawer.DashboardCategory;
import com.android.settingslib.drawer.ProviderTile; import com.android.settingslib.drawer.ProviderTile;
import com.android.settingslib.drawer.Tile; import com.android.settingslib.drawer.Tile;
@@ -536,6 +538,10 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment
@VisibleForTesting @VisibleForTesting
Preference createPreference(Tile tile) { 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 return tile instanceof ProviderTile
? new SwitchPreference(getPrefContext()) ? new SwitchPreference(getPrefContext())
: tile.hasSwitch() : tile.hasSwitch()

View File

@@ -48,6 +48,7 @@ import androidx.preference.SwitchPreference;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.core.FeatureFlags; import com.android.settings.core.FeatureFlags;
import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.homepage.HomepagePreference;
import com.android.settings.slices.BlockingSlicePrefController; import com.android.settings.slices.BlockingSlicePrefController;
import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.widget.PrimarySwitchPreference; 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.MetricsFeatureProvider;
import com.android.settingslib.core.instrumentation.VisibilityLoggerMixin; import com.android.settingslib.core.instrumentation.VisibilityLoggerMixin;
import com.android.settingslib.drawer.ActivityTile; import com.android.settingslib.drawer.ActivityTile;
import com.android.settingslib.drawer.CategoryKey;
import com.android.settingslib.drawer.DashboardCategory; import com.android.settingslib.drawer.DashboardCategory;
import com.android.settingslib.drawer.ProviderTile; import com.android.settingslib.drawer.ProviderTile;
@@ -335,6 +337,16 @@ public class DashboardFragmentTest {
assertThat(pref).isInstanceOf(PrimarySwitchPreference.class); 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 @Test
public void isFeatureFlagAndIsParalleled_runParalleledUpdatePreferenceStates() { public void isFeatureFlagAndIsParalleled_runParalleledUpdatePreferenceStates() {
FeatureFlagUtils.setEnabled(mContext, FeatureFlags.CONTROLLER_ENHANCEMENT, true); FeatureFlagUtils.setEnabled(mContext, FeatureFlags.CONTROLLER_ENHANCEMENT, true);