diff --git a/res/xml/top_level_settings_grouped.xml b/res/xml/top_level_settings_grouped.xml
index 964c198..dc78f47 100644
--- a/res/xml/top_level_settings_grouped.xml
+++ b/res/xml/top_level_settings_grouped.xml
@@ -29,7 +29,6 @@
             android:icon="@drawable/ic_homepage_network"
             android:key="top_level_network"
             android:order="-120"
-            android:summary="@string/summary_placeholder"
             android:title="@string/network_dashboard_title"
             settings:controller="com.android.settings.network.TopLevelNetworkEntryPreferenceController"/>
 
@@ -38,7 +37,6 @@
             android:icon="@drawable/ic_homepage_connected_device"
             android:key="top_level_connected_devices"
             android:order="-110"
-            android:summary="@string/summary_placeholder"
             android:title="@string/connected_devices_dashboard_title"
             settings:controller="com.android.settings.connecteddevice.TopLevelConnectedDevicesPreferenceController"/>
     </PreferenceCategory>
@@ -52,7 +50,6 @@
             android:icon="@drawable/ic_homepage_apps"
             android:key="top_level_apps_and_notifs"
             android:order="-100"
-            android:summary="@string/app_and_notification_dashboard_summary"
             android:title="@string/app_and_notification_dashboard_title"/>
     </PreferenceCategory>
 
@@ -65,7 +62,6 @@
             android:icon="@drawable/ic_homepage_battery"
             android:key="top_level_battery"
             android:order="-90"
-            android:summary="@string/summary_placeholder"
             android:title="@string/power_usage_summary_title"
             settings:controller="com.android.settings.fuelgauge.TopLevelBatteryPreferenceController"/>
 
@@ -74,7 +70,6 @@
             android:icon="@drawable/ic_homepage_storage"
             android:key="top_level_storage"
             android:order="-80"
-            android:summary="@string/summary_placeholder"
             android:title="@string/storage_settings"
             settings:controller="com.android.settings.deviceinfo.TopLevelStoragePreferenceController"/>
 
@@ -83,7 +78,6 @@
             android:icon="@drawable/ic_homepage_sound"
             android:key="top_level_sound"
             android:order="-70"
-            android:summary="@string/sound_dashboard_summary"
             android:title="@string/sound_settings"/>
 
         <Preference
@@ -91,7 +85,6 @@
             android:icon="@drawable/ic_homepage_display"
             android:key="top_level_display"
             android:order="-60"
-            android:summary="@string/summary_placeholder"
             android:title="@string/display_settings"
             settings:controller="com.android.settings.display.TopLevelDisplayPreferenceController"/>
 
@@ -100,7 +93,6 @@
             android:icon="@drawable/ic_homepage_accessibility"
             android:key="top_level_accessibility"
             android:order="-50"
-            android:summary="@string/accessibility_settings_summary"
             android:title="@string/accessibility_settings"
             settings:controller="com.android.settings.accessibility.TopLevelAccessibilityPreferenceController"/>
     </PreferenceCategory>
@@ -114,7 +106,6 @@
             android:icon="@drawable/ic_homepage_privacy"
             android:key="top_level_privacy"
             android:order="-40"
-            android:summary="@string/privacy_dashboard_summary"
             android:title="@string/privacy_dashboard_title"/>
 
         <Preference
@@ -122,7 +113,6 @@
             android:icon="@drawable/ic_homepage_location"
             android:key="top_level_location"
             android:order="-30"
-            android:summary="@string/location_settings_loading_app_permission_stats"
             android:title="@string/location_settings_title"
             settings:controller="com.android.settings.location.TopLevelLocationPreferenceController"/>
 
@@ -131,7 +121,6 @@
             android:icon="@drawable/ic_homepage_security"
             android:key="top_level_security"
             android:order="-20"
-            android:summary="@string/summary_placeholder"
             android:title="@string/security_settings_title"
             settings:controller="com.android.settings.security.TopLevelSecurityEntryPreferenceController"/>
     </PreferenceCategory>
@@ -145,7 +134,6 @@
             android:icon="@drawable/ic_homepage_accounts"
             android:key="top_level_accounts"
             android:order="-10"
-            android:summary="@string/summary_placeholder"
             android:title="@string/account_dashboard_title"
             settings:controller="com.android.settings.accounts.TopLevelAccountEntryPreferenceController"/>
     </PreferenceCategory>
@@ -159,7 +147,6 @@
             android:icon="@drawable/ic_homepage_system_dashboard"
             android:key="top_level_system"
             android:order="10"
-            android:summary="@string/system_dashboard_summary"
             android:title="@string/header_category_system"/>
 
         <Preference
@@ -167,7 +154,6 @@
             android:icon="@drawable/ic_homepage_about"
             android:key="top_level_about_device"
             android:order="20"
-            android:summary="@string/summary_placeholder"
             android:title="@string/about_settings"
             settings:controller="com.android.settings.deviceinfo.aboutphone.TopLevelAboutDevicePreferenceController"/>
 
@@ -175,7 +161,6 @@
             android:icon="@drawable/ic_homepage_support"
             android:key="top_level_support"
             android:order="100"
-            android:summary="@string/support_summary"
             android:title="@string/page_tab_title_support"
             settings:controller="com.android.settings.support.SupportPreferenceController"/>
     </PreferenceCategory>
diff --git a/src/com/android/settings/accounts/TopLevelAccountEntryPreferenceController.java b/src/com/android/settings/accounts/TopLevelAccountEntryPreferenceController.java
index e4e32e5..7cd746f 100644
--- a/src/com/android/settings/accounts/TopLevelAccountEntryPreferenceController.java
+++ b/src/com/android/settings/accounts/TopLevelAccountEntryPreferenceController.java
@@ -21,9 +21,11 @@
 import android.os.UserHandle;
 import android.text.BidiFormatter;
 import android.text.TextUtils;
+import android.util.FeatureFlagUtils;
 
 import com.android.settings.R;
 import com.android.settings.core.BasePreferenceController;
+import com.android.settings.core.FeatureFlags;
 import com.android.settingslib.accounts.AuthenticatorHelper;
 
 import java.util.ArrayList;
@@ -41,6 +43,11 @@
 
     @Override
     public CharSequence getSummary() {
+        // Remove homepage summaries for silky home.
+        if (FeatureFlagUtils.isEnabled(mContext, FeatureFlags.SILKY_HOME)) {
+            return null;
+        }
+
         final AuthenticatorHelper authHelper = new AuthenticatorHelper(mContext,
                 UserHandle.of(UserHandle.myUserId()), null /* OnAccountsUpdateListener */);
         final String[] types = authHelper.getEnabledAccountTypes();
diff --git a/src/com/android/settings/connecteddevice/TopLevelConnectedDevicesPreferenceController.java b/src/com/android/settings/connecteddevice/TopLevelConnectedDevicesPreferenceController.java
index fd36bca..fac3201 100644
--- a/src/com/android/settings/connecteddevice/TopLevelConnectedDevicesPreferenceController.java
+++ b/src/com/android/settings/connecteddevice/TopLevelConnectedDevicesPreferenceController.java
@@ -17,9 +17,11 @@
 package com.android.settings.connecteddevice;
 
 import android.content.Context;
+import android.util.FeatureFlagUtils;
 
 import com.android.settings.R;
 import com.android.settings.core.BasePreferenceController;
+import com.android.settings.core.FeatureFlags;
 
 public class TopLevelConnectedDevicesPreferenceController extends BasePreferenceController {
 
@@ -36,6 +38,11 @@
 
     @Override
     public CharSequence getSummary() {
+        // Remove homepage summaries for silky home.
+        if (FeatureFlagUtils.isEnabled(mContext, FeatureFlags.SILKY_HOME)) {
+            return null;
+        }
+
         return mContext.getText(
                 AdvancedConnectedDeviceController.getConnectedDevicesSummaryResourceId(mContext));
     }
diff --git a/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java b/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
index bfcfc82..0243b8a 100644
--- a/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
+++ b/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
@@ -47,6 +47,7 @@
 import android.provider.Settings;
 import android.text.TextUtils;
 import android.util.ArrayMap;
+import android.util.FeatureFlagUtils;
 import android.util.Log;
 import android.util.Pair;
 import android.widget.Toast;
@@ -58,11 +59,13 @@
 
 import com.android.settings.R;
 import com.android.settings.SettingsActivity;
+import com.android.settings.core.FeatureFlags;
 import com.android.settings.dashboard.profileselector.ProfileSelectDialog;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.widget.PrimarySwitchPreference;
 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
 import com.android.settingslib.drawer.ActivityTile;
+import com.android.settingslib.drawer.CategoryKey;
 import com.android.settingslib.drawer.DashboardCategory;
 import com.android.settingslib.drawer.Tile;
 import com.android.settingslib.drawer.TileUtils;
@@ -255,6 +258,12 @@
     }
 
     private DynamicDataObserver bindSummaryAndGetObserver(Preference preference, Tile tile) {
+        // Skip binding homepage tile summaries for silky home.
+        if (FeatureFlagUtils.isEnabled(mContext, FeatureFlags.SILKY_HOME)
+                && TextUtils.equals(tile.getCategory(), CategoryKey.CATEGORY_HOMEPAGE)) {
+            return null;
+        }
+
         final CharSequence summary = tile.getSummary(mContext);
         if (summary != null) {
             preference.setSummary(summary);
diff --git a/src/com/android/settings/deviceinfo/TopLevelStoragePreferenceController.java b/src/com/android/settings/deviceinfo/TopLevelStoragePreferenceController.java
index 8a2d3ba..dcc581c 100644
--- a/src/com/android/settings/deviceinfo/TopLevelStoragePreferenceController.java
+++ b/src/com/android/settings/deviceinfo/TopLevelStoragePreferenceController.java
@@ -19,11 +19,13 @@
 import android.content.Context;
 import android.os.storage.StorageManager;
 import android.text.format.Formatter;
+import android.util.FeatureFlagUtils;
 
 import androidx.preference.Preference;
 
 import com.android.settings.R;
 import com.android.settings.core.BasePreferenceController;
+import com.android.settings.core.FeatureFlags;
 import com.android.settingslib.deviceinfo.PrivateStorageInfo;
 import com.android.settingslib.deviceinfo.StorageManagerVolumeProvider;
 import com.android.settingslib.utils.ThreadUtils;
@@ -48,6 +50,11 @@
 
     @Override
     protected void refreshSummary(Preference preference) {
+        // Remove homepage summaries for silky home.
+        if (FeatureFlagUtils.isEnabled(mContext, FeatureFlags.SILKY_HOME)) {
+            return;
+        }
+
         if (preference == null) {
             return;
         }
diff --git a/src/com/android/settings/deviceinfo/aboutphone/TopLevelAboutDevicePreferenceController.java b/src/com/android/settings/deviceinfo/aboutphone/TopLevelAboutDevicePreferenceController.java
index 83efcc4..3bda7b9 100644
--- a/src/com/android/settings/deviceinfo/aboutphone/TopLevelAboutDevicePreferenceController.java
+++ b/src/com/android/settings/deviceinfo/aboutphone/TopLevelAboutDevicePreferenceController.java
@@ -17,8 +17,10 @@
 package com.android.settings.deviceinfo.aboutphone;
 
 import android.content.Context;
+import android.util.FeatureFlagUtils;
 
 import com.android.settings.core.BasePreferenceController;
+import com.android.settings.core.FeatureFlags;
 import com.android.settings.deviceinfo.DeviceNamePreferenceController;
 
 public class TopLevelAboutDevicePreferenceController extends BasePreferenceController {
@@ -34,6 +36,11 @@
 
     @Override
     public CharSequence getSummary() {
+        // Remove homepage summaries for silky home.
+        if (FeatureFlagUtils.isEnabled(mContext, FeatureFlags.SILKY_HOME)) {
+            return null;
+        }
+
         final DeviceNamePreferenceController deviceNamePreferenceController =
                 new DeviceNamePreferenceController(mContext, "unused_key");
         return deviceNamePreferenceController.getSummary();
diff --git a/src/com/android/settings/display/TopLevelDisplayPreferenceController.java b/src/com/android/settings/display/TopLevelDisplayPreferenceController.java
index 73aafe5..cd2dd13 100644
--- a/src/com/android/settings/display/TopLevelDisplayPreferenceController.java
+++ b/src/com/android/settings/display/TopLevelDisplayPreferenceController.java
@@ -17,9 +17,11 @@
 package com.android.settings.display;
 
 import android.content.Context;
+import android.util.FeatureFlagUtils;
 
 import com.android.settings.R;
 import com.android.settings.core.BasePreferenceController;
+import com.android.settings.core.FeatureFlags;
 
 public class TopLevelDisplayPreferenceController extends BasePreferenceController {
 
@@ -36,6 +38,11 @@
 
     @Override
     public CharSequence getSummary() {
+        // Remove homepage summaries for silky home.
+        if (FeatureFlagUtils.isEnabled(mContext, FeatureFlags.SILKY_HOME)) {
+            return null;
+        }
+
         final WallpaperPreferenceController controller =
                 new WallpaperPreferenceController(mContext, "unused_key");
         if (controller.isAvailable()) {
diff --git a/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceController.java b/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceController.java
index 88fd1ce..1936698 100644
--- a/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceController.java
@@ -17,12 +17,14 @@
 package com.android.settings.fuelgauge;
 
 import android.content.Context;
+import android.util.FeatureFlagUtils;
 
 import androidx.preference.Preference;
 import androidx.preference.PreferenceScreen;
 
 import com.android.settings.R;
 import com.android.settings.core.BasePreferenceController;
+import com.android.settings.core.FeatureFlags;
 import com.android.settingslib.core.lifecycle.LifecycleObserver;
 import com.android.settingslib.core.lifecycle.events.OnStart;
 import com.android.settingslib.core.lifecycle.events.OnStop;
@@ -69,6 +71,11 @@
 
     @Override
     public CharSequence getSummary() {
+        // Remove homepage summaries for silky home.
+        if (FeatureFlagUtils.isEnabled(mContext, FeatureFlags.SILKY_HOME)) {
+            return null;
+        }
+
         return getDashboardLabel(mContext, mBatteryInfo);
     }
 
diff --git a/src/com/android/settings/location/TopLevelLocationPreferenceController.java b/src/com/android/settings/location/TopLevelLocationPreferenceController.java
index ec58a34..fe85c7f 100644
--- a/src/com/android/settings/location/TopLevelLocationPreferenceController.java
+++ b/src/com/android/settings/location/TopLevelLocationPreferenceController.java
@@ -11,6 +11,7 @@
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.permission.PermissionControllerManager;
+import android.util.FeatureFlagUtils;
 
 import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
@@ -18,6 +19,7 @@
 import com.android.settings.R;
 import com.android.settings.Utils;
 import com.android.settings.core.BasePreferenceController;
+import com.android.settings.core.FeatureFlags;
 import com.android.settingslib.core.lifecycle.LifecycleObserver;
 import com.android.settingslib.core.lifecycle.events.OnStart;
 import com.android.settingslib.core.lifecycle.events.OnStop;
@@ -50,6 +52,11 @@
 
     @Override
     public CharSequence getSummary() {
+        // Remove homepage summaries for silky home.
+        if (FeatureFlagUtils.isEnabled(mContext, FeatureFlags.SILKY_HOME)) {
+            return null;
+        }
+
         if (mLocationManager.isLocationEnabled()) {
             if (mNumTotal == -1) {
                 return mContext.getString(R.string.location_settings_loading_app_permission_stats);
diff --git a/src/com/android/settings/network/TopLevelNetworkEntryPreferenceController.java b/src/com/android/settings/network/TopLevelNetworkEntryPreferenceController.java
index c630cc7..fe2392b 100644
--- a/src/com/android/settings/network/TopLevelNetworkEntryPreferenceController.java
+++ b/src/com/android/settings/network/TopLevelNetworkEntryPreferenceController.java
@@ -20,10 +20,12 @@
 import android.icu.text.ListFormatter;
 import android.text.BidiFormatter;
 import android.text.TextUtils;
+import android.util.FeatureFlagUtils;
 
 import com.android.settings.R;
 import com.android.settings.Utils;
 import com.android.settings.core.BasePreferenceController;
+import com.android.settings.core.FeatureFlags;
 import com.android.settings.wifi.WifiPrimarySwitchPreferenceController;
 
 import java.util.ArrayList;
@@ -51,6 +53,11 @@
 
     @Override
     public CharSequence getSummary() {
+        // Remove homepage summaries for silky home.
+        if (FeatureFlagUtils.isEnabled(mContext, FeatureFlags.SILKY_HOME)) {
+            return null;
+        }
+
         final String wifiSummary = BidiFormatter.getInstance()
                 .unicodeWrap(mContext.getString(R.string.wifi_settings_title));
         final String mobileSummary = mContext.getString(
diff --git a/src/com/android/settings/network/telephony/MobileNetworkActivity.java b/src/com/android/settings/network/telephony/MobileNetworkActivity.java
index 6513384..b179770 100644
--- a/src/com/android/settings/network/telephony/MobileNetworkActivity.java
+++ b/src/com/android/settings/network/telephony/MobileNetworkActivity.java
@@ -16,6 +16,8 @@
 
 package com.android.settings.network.telephony;
 
+import static com.android.settings.SettingsActivity.EXTRA_FRAGMENT_ARG_KEY;
+
 import android.app.ActionBar;
 import android.content.Intent;
 import android.os.Bundle;
@@ -254,8 +256,13 @@
         final FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
 
         final int subId = subInfo.getSubscriptionId();
+        final Intent intent = getIntent();
         final Bundle bundle = new Bundle();
         bundle.putInt(Settings.EXTRA_SUB_ID, subId);
+        if (intent != null && Settings.ACTION_MMS_MESSAGE_SETTING.equals(intent.getAction())) {
+            // highlight "mms_message" preference.
+            bundle.putString(EXTRA_FRAGMENT_ARG_KEY, "mms_message");
+        }
 
         final String fragmentTag = buildFragmentTag(subId);
         if (fragmentManager.findFragmentByTag(fragmentTag) != null) {
diff --git a/src/com/android/settings/security/TopLevelSecurityEntryPreferenceController.java b/src/com/android/settings/security/TopLevelSecurityEntryPreferenceController.java
index 4a4d345..4efc620 100644
--- a/src/com/android/settings/security/TopLevelSecurityEntryPreferenceController.java
+++ b/src/com/android/settings/security/TopLevelSecurityEntryPreferenceController.java
@@ -19,10 +19,12 @@
 import android.content.Context;
 import android.hardware.face.FaceManager;
 import android.hardware.fingerprint.FingerprintManager;
+import android.util.FeatureFlagUtils;
 
 import com.android.settings.R;
 import com.android.settings.Utils;
 import com.android.settings.core.BasePreferenceController;
+import com.android.settings.core.FeatureFlags;
 
 public class TopLevelSecurityEntryPreferenceController extends BasePreferenceController {
 
@@ -37,6 +39,11 @@
 
     @Override
     public CharSequence getSummary() {
+        // Remove homepage summaries for silky home.
+        if (FeatureFlagUtils.isEnabled(mContext, FeatureFlags.SILKY_HOME)) {
+            return null;
+        }
+
         final FingerprintManager fpm =
                 Utils.getFingerprintManagerOrNull(mContext);
         final FaceManager faceManager =
diff --git a/tests/unit/InstrumentedEntitlementApp/Android.bp b/tests/legacy_unit/InstrumentedEntitlementApp/Android.bp
similarity index 100%
rename from tests/unit/InstrumentedEntitlementApp/Android.bp
rename to tests/legacy_unit/InstrumentedEntitlementApp/Android.bp
diff --git a/tests/unit/InstrumentedEntitlementApp/AndroidManifest.xml b/tests/legacy_unit/InstrumentedEntitlementApp/AndroidManifest.xml
similarity index 100%
rename from tests/unit/InstrumentedEntitlementApp/AndroidManifest.xml
rename to tests/legacy_unit/InstrumentedEntitlementApp/AndroidManifest.xml
diff --git a/tests/unit/InstrumentedEntitlementApp/src/android/test/entitlement/InstrumentedEntitlementActivity.java b/tests/legacy_unit/InstrumentedEntitlementApp/src/android/test/entitlement/InstrumentedEntitlementActivity.java
similarity index 100%
rename from tests/unit/InstrumentedEntitlementApp/src/android/test/entitlement/InstrumentedEntitlementActivity.java
rename to tests/legacy_unit/InstrumentedEntitlementApp/src/android/test/entitlement/InstrumentedEntitlementActivity.java
diff --git a/tests/legacy_unit/README b/tests/legacy_unit/README
new file mode 100644
index 0000000..9e318d7
--- /dev/null
+++ b/tests/legacy_unit/README
@@ -0,0 +1 @@
+Directory for legacy settings unit tests, which are no longer maintained.
diff --git a/tests/unit/src/com/android/settings/UserCredentialsTest.java b/tests/legacy_unit/src/com/android/settings/UserCredentialsTest.java
similarity index 100%
rename from tests/unit/src/com/android/settings/UserCredentialsTest.java
rename to tests/legacy_unit/src/com/android/settings/UserCredentialsTest.java
diff --git a/tests/unit/src/com/android/settings/UtilsTest.java b/tests/legacy_unit/src/com/android/settings/UtilsTest.java
similarity index 100%
rename from tests/unit/src/com/android/settings/UtilsTest.java
rename to tests/legacy_unit/src/com/android/settings/UtilsTest.java
diff --git a/tests/unit/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragmentTest.java b/tests/legacy_unit/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragmentTest.java
similarity index 100%
rename from tests/unit/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragmentTest.java
rename to tests/legacy_unit/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragmentTest.java
diff --git a/tests/unit/src/com/android/settings/accounts/AccountsSettingsTest.java b/tests/legacy_unit/src/com/android/settings/accounts/AccountsSettingsTest.java
similarity index 100%
rename from tests/unit/src/com/android/settings/accounts/AccountsSettingsTest.java
rename to tests/legacy_unit/src/com/android/settings/accounts/AccountsSettingsTest.java
diff --git a/tests/unit/src/com/android/settings/accounts/Authenticator.java b/tests/legacy_unit/src/com/android/settings/accounts/Authenticator.java
similarity index 100%
rename from tests/unit/src/com/android/settings/accounts/Authenticator.java
rename to tests/legacy_unit/src/com/android/settings/accounts/Authenticator.java
diff --git a/tests/unit/src/com/android/settings/accounts/TestAuthService.java b/tests/legacy_unit/src/com/android/settings/accounts/TestAuthService.java
similarity index 100%
rename from tests/unit/src/com/android/settings/accounts/TestAuthService.java
rename to tests/legacy_unit/src/com/android/settings/accounts/TestAuthService.java
diff --git a/tests/unit/src/com/android/settings/applications/manageapplications/ManageApplicationsUnitTest.java b/tests/legacy_unit/src/com/android/settings/applications/manageapplications/ManageApplicationsUnitTest.java
similarity index 100%
rename from tests/unit/src/com/android/settings/applications/manageapplications/ManageApplicationsUnitTest.java
rename to tests/legacy_unit/src/com/android/settings/applications/manageapplications/ManageApplicationsUnitTest.java
diff --git a/tests/unit/src/com/android/settings/backup/BackupIntentTest.java b/tests/legacy_unit/src/com/android/settings/backup/BackupIntentTest.java
similarity index 100%
rename from tests/unit/src/com/android/settings/backup/BackupIntentTest.java
rename to tests/legacy_unit/src/com/android/settings/backup/BackupIntentTest.java
diff --git a/tests/unit/src/com/android/settings/bluetooth/Utf8ByteLengthFilterTest.java b/tests/legacy_unit/src/com/android/settings/bluetooth/Utf8ByteLengthFilterTest.java
similarity index 100%
rename from tests/unit/src/com/android/settings/bluetooth/Utf8ByteLengthFilterTest.java
rename to tests/legacy_unit/src/com/android/settings/bluetooth/Utf8ByteLengthFilterTest.java
diff --git a/tests/unit/src/com/android/settings/core/LifecycleEventHandlingTest.java b/tests/legacy_unit/src/com/android/settings/core/LifecycleEventHandlingTest.java
similarity index 100%
rename from tests/unit/src/com/android/settings/core/LifecycleEventHandlingTest.java
rename to tests/legacy_unit/src/com/android/settings/core/LifecycleEventHandlingTest.java
diff --git a/tests/unit/src/com/android/settings/dashboard/FirstIdViewMatcher.java b/tests/legacy_unit/src/com/android/settings/dashboard/FirstIdViewMatcher.java
similarity index 100%
rename from tests/unit/src/com/android/settings/dashboard/FirstIdViewMatcher.java
rename to tests/legacy_unit/src/com/android/settings/dashboard/FirstIdViewMatcher.java
diff --git a/tests/unit/src/com/android/settings/dashboard/PreferenceThemeTest.java b/tests/legacy_unit/src/com/android/settings/dashboard/PreferenceThemeTest.java
similarity index 100%
rename from tests/unit/src/com/android/settings/dashboard/PreferenceThemeTest.java
rename to tests/legacy_unit/src/com/android/settings/dashboard/PreferenceThemeTest.java
diff --git a/tests/unit/src/com/android/settings/dashboard/UiBlockerControllerTest.java b/tests/legacy_unit/src/com/android/settings/dashboard/UiBlockerControllerTest.java
similarity index 100%
rename from tests/unit/src/com/android/settings/dashboard/UiBlockerControllerTest.java
rename to tests/legacy_unit/src/com/android/settings/dashboard/UiBlockerControllerTest.java
diff --git a/tests/unit/src/com/android/settings/datetime/timezone/model/TimeZoneDataTest.java b/tests/legacy_unit/src/com/android/settings/datetime/timezone/model/TimeZoneDataTest.java
similarity index 100%
rename from tests/unit/src/com/android/settings/datetime/timezone/model/TimeZoneDataTest.java
rename to tests/legacy_unit/src/com/android/settings/datetime/timezone/model/TimeZoneDataTest.java
diff --git a/tests/unit/src/com/android/settings/display/NightDisplaySettingsActivityTest.java b/tests/legacy_unit/src/com/android/settings/display/NightDisplaySettingsActivityTest.java
similarity index 100%
rename from tests/unit/src/com/android/settings/display/NightDisplaySettingsActivityTest.java
rename to tests/legacy_unit/src/com/android/settings/display/NightDisplaySettingsActivityTest.java
diff --git a/tests/unit/src/com/android/settings/display/ThemePreferenceControllerTest.java b/tests/legacy_unit/src/com/android/settings/display/ThemePreferenceControllerTest.java
similarity index 100%
rename from tests/unit/src/com/android/settings/display/ThemePreferenceControllerTest.java
rename to tests/legacy_unit/src/com/android/settings/display/ThemePreferenceControllerTest.java
diff --git a/tests/unit/src/com/android/settings/homepage/contextualcards/ContextualCardLoaderTest.java b/tests/legacy_unit/src/com/android/settings/homepage/contextualcards/ContextualCardLoaderTest.java
similarity index 100%
rename from tests/unit/src/com/android/settings/homepage/contextualcards/ContextualCardLoaderTest.java
rename to tests/legacy_unit/src/com/android/settings/homepage/contextualcards/ContextualCardLoaderTest.java
diff --git a/tests/unit/src/com/android/settings/notification/AppBubbleNotificationSettingsTest.java b/tests/legacy_unit/src/com/android/settings/notification/AppBubbleNotificationSettingsTest.java
similarity index 100%
rename from tests/unit/src/com/android/settings/notification/AppBubbleNotificationSettingsTest.java
rename to tests/legacy_unit/src/com/android/settings/notification/AppBubbleNotificationSettingsTest.java
diff --git a/tests/unit/src/com/android/settings/notification/ChannelNotificationSettingsTest.java b/tests/legacy_unit/src/com/android/settings/notification/ChannelNotificationSettingsTest.java
similarity index 100%
rename from tests/unit/src/com/android/settings/notification/ChannelNotificationSettingsTest.java
rename to tests/legacy_unit/src/com/android/settings/notification/ChannelNotificationSettingsTest.java
diff --git a/tests/unit/src/com/android/settings/notification/OWNERS b/tests/legacy_unit/src/com/android/settings/notification/OWNERS
similarity index 100%
rename from tests/unit/src/com/android/settings/notification/OWNERS
rename to tests/legacy_unit/src/com/android/settings/notification/OWNERS
diff --git a/tests/unit/src/com/android/settings/notification/app/ChannelListPreferenceControllerTest.java b/tests/legacy_unit/src/com/android/settings/notification/app/ChannelListPreferenceControllerTest.java
similarity index 100%
rename from tests/unit/src/com/android/settings/notification/app/ChannelListPreferenceControllerTest.java
rename to tests/legacy_unit/src/com/android/settings/notification/app/ChannelListPreferenceControllerTest.java
diff --git a/tests/unit/src/com/android/settings/password/SetupChooseLockPasswordAppTest.java b/tests/legacy_unit/src/com/android/settings/password/SetupChooseLockPasswordAppTest.java
similarity index 100%
rename from tests/unit/src/com/android/settings/password/SetupChooseLockPasswordAppTest.java
rename to tests/legacy_unit/src/com/android/settings/password/SetupChooseLockPasswordAppTest.java
diff --git a/tests/unit/src/com/android/settings/print/PrintJobSettingsActivityTest.java b/tests/legacy_unit/src/com/android/settings/print/PrintJobSettingsActivityTest.java
similarity index 100%
rename from tests/unit/src/com/android/settings/print/PrintJobSettingsActivityTest.java
rename to tests/legacy_unit/src/com/android/settings/print/PrintJobSettingsActivityTest.java
diff --git a/tests/unit/src/com/android/settings/search/SearchIndexablesContractTest.java b/tests/legacy_unit/src/com/android/settings/search/SearchIndexablesContractTest.java
similarity index 100%
rename from tests/unit/src/com/android/settings/search/SearchIndexablesContractTest.java
rename to tests/legacy_unit/src/com/android/settings/search/SearchIndexablesContractTest.java
diff --git a/tests/unit/src/com/android/settings/search/SearchResultTrampolineTest.java b/tests/legacy_unit/src/com/android/settings/search/SearchResultTrampolineTest.java
similarity index 100%
rename from tests/unit/src/com/android/settings/search/SearchResultTrampolineTest.java
rename to tests/legacy_unit/src/com/android/settings/search/SearchResultTrampolineTest.java
diff --git a/tests/unit/src/com/android/settings/search/SettingsSearchIndexablesProviderTest.java b/tests/legacy_unit/src/com/android/settings/search/SettingsSearchIndexablesProviderTest.java
similarity index 100%
rename from tests/unit/src/com/android/settings/search/SettingsSearchIndexablesProviderTest.java
rename to tests/legacy_unit/src/com/android/settings/search/SettingsSearchIndexablesProviderTest.java
diff --git a/tests/unit/src/com/android/settings/sim/OWNERS b/tests/legacy_unit/src/com/android/settings/sim/OWNERS
similarity index 100%
rename from tests/unit/src/com/android/settings/sim/OWNERS
rename to tests/legacy_unit/src/com/android/settings/sim/OWNERS
diff --git a/tests/unit/src/com/android/settings/tests/BluetoothRequestPermissionTest.java b/tests/legacy_unit/src/com/android/settings/tests/BluetoothRequestPermissionTest.java
similarity index 100%
rename from tests/unit/src/com/android/settings/tests/BluetoothRequestPermissionTest.java
rename to tests/legacy_unit/src/com/android/settings/tests/BluetoothRequestPermissionTest.java
diff --git a/tests/unit/src/com/android/settings/tests/Manufacturer.java b/tests/legacy_unit/src/com/android/settings/tests/Manufacturer.java
similarity index 100%
rename from tests/unit/src/com/android/settings/tests/Manufacturer.java
rename to tests/legacy_unit/src/com/android/settings/tests/Manufacturer.java
diff --git a/tests/unit/src/com/android/settings/tests/Operator.java b/tests/legacy_unit/src/com/android/settings/tests/Operator.java
similarity index 100%
rename from tests/unit/src/com/android/settings/tests/Operator.java
rename to tests/legacy_unit/src/com/android/settings/tests/Operator.java
diff --git a/tests/unit/src/com/android/settings/utils/FileSizeFormatterTest.java b/tests/legacy_unit/src/com/android/settings/utils/FileSizeFormatterTest.java
similarity index 100%
rename from tests/unit/src/com/android/settings/utils/FileSizeFormatterTest.java
rename to tests/legacy_unit/src/com/android/settings/utils/FileSizeFormatterTest.java
diff --git a/tests/unit/src/com/android/settings/utils/MockedServiceManager.java b/tests/legacy_unit/src/com/android/settings/utils/MockedServiceManager.java
similarity index 100%
rename from tests/unit/src/com/android/settings/utils/MockedServiceManager.java
rename to tests/legacy_unit/src/com/android/settings/utils/MockedServiceManager.java
diff --git a/tests/unit/src/com/android/settings/vpn2/AppSettingsTest.java b/tests/legacy_unit/src/com/android/settings/vpn2/AppSettingsTest.java
similarity index 100%
rename from tests/unit/src/com/android/settings/vpn2/AppSettingsTest.java
rename to tests/legacy_unit/src/com/android/settings/vpn2/AppSettingsTest.java
diff --git a/tests/unit/src/com/android/settings/vpn2/PreferenceListTest.java b/tests/legacy_unit/src/com/android/settings/vpn2/PreferenceListTest.java
similarity index 100%
rename from tests/unit/src/com/android/settings/vpn2/PreferenceListTest.java
rename to tests/legacy_unit/src/com/android/settings/vpn2/PreferenceListTest.java
diff --git a/tests/unit/src/com/android/settings/wifi/calling/OWNERS b/tests/legacy_unit/src/com/android/settings/wifi/calling/OWNERS
similarity index 100%
rename from tests/unit/src/com/android/settings/wifi/calling/OWNERS
rename to tests/legacy_unit/src/com/android/settings/wifi/calling/OWNERS
diff --git a/tests/robotests/src/com/android/settings/accounts/TopLevelAccountEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accounts/TopLevelAccountEntryPreferenceControllerTest.java
index 8fe8e19..1cd5fb1 100644
--- a/tests/robotests/src/com/android/settings/accounts/TopLevelAccountEntryPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accounts/TopLevelAccountEntryPreferenceControllerTest.java
@@ -19,8 +19,10 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import android.content.Context;
+import android.util.FeatureFlagUtils;
 
 import com.android.settings.R;
+import com.android.settings.core.FeatureFlags;
 import com.android.settings.testutils.shadow.ShadowAuthenticationHelper;
 
 import org.junit.After;
@@ -51,6 +53,10 @@
     @After
     public void tearDown() {
         ShadowAuthenticationHelper.reset();
+
+        if (FeatureFlagUtils.isEnabled(mContext, FeatureFlags.SILKY_HOME)) {
+            FeatureFlagUtils.setEnabled(mContext, FeatureFlags.SILKY_HOME, false);
+        }
     }
 
     @Test
@@ -76,4 +82,11 @@
         // should only show the 2 accounts with labels
         assertThat(mController.getSummary()).isEqualTo(LABELS[0] + " and " + LABELS[1]);
     }
+
+    @Test
+    public void getSummary_silkyHomeEnabled_shouldBeNull() {
+        FeatureFlagUtils.setEnabled(mContext, FeatureFlags.SILKY_HOME, true);
+
+        assertThat(mController.getSummary()).isNull();
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/TopLevelConnectedDevicesPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/TopLevelConnectedDevicesPreferenceControllerTest.java
index 14fe4bd..232bc16 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/TopLevelConnectedDevicesPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/TopLevelConnectedDevicesPreferenceControllerTest.java
@@ -22,9 +22,12 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import android.content.Context;
+import android.util.FeatureFlagUtils;
 
 import com.android.settings.R;
+import com.android.settings.core.FeatureFlags;
 
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -46,6 +49,13 @@
         mController = new TopLevelConnectedDevicesPreferenceController(mContext, "test_key");
     }
 
+    @After
+    public void tearDown() {
+        if (FeatureFlagUtils.isEnabled(mContext, FeatureFlags.SILKY_HOME)) {
+            FeatureFlagUtils.setEnabled(mContext, FeatureFlags.SILKY_HOME, false);
+        }
+    }
+
     @Test
     public void getAvailibilityStatus_availableByDefault() {
         assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
@@ -64,6 +74,13 @@
                 .isEqualTo(mContext.getText(R.string.settings_label_launcher));
     }
 
+    @Test
+    public void getSummary_silkyHomeEnabled_shouldBeNull() {
+        FeatureFlagUtils.setEnabled(mContext, FeatureFlags.SILKY_HOME, true);
+
+        assertThat(mController.getSummary()).isNull();
+    }
+
     @Implements(AdvancedConnectedDeviceController.class)
     private static class ShadowAdvancedConnectedDeviceController {
 
diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java
index 5bc07da..36bc376 100644
--- a/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java
+++ b/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java
@@ -55,6 +55,7 @@
 import android.os.Bundle;
 import android.os.UserHandle;
 import android.os.UserManager;
+import android.util.FeatureFlagUtils;
 import android.util.Pair;
 
 import androidx.fragment.app.FragmentActivity;
@@ -65,6 +66,7 @@
 import com.android.settings.R;
 import com.android.settings.SettingsActivity;
 import com.android.settings.Utils;
+import com.android.settings.core.FeatureFlags;
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settings.testutils.shadow.ShadowTileUtils;
 import com.android.settings.testutils.shadow.ShadowUserManager;
@@ -75,6 +77,7 @@
 import com.android.settingslib.drawer.Tile;
 import com.android.settingslib.drawer.TileUtils;
 
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -146,6 +149,13 @@
         mImpl = new DashboardFeatureProviderImpl(mContext);
     }
 
+    @After
+    public void tearDown() {
+        if (FeatureFlagUtils.isEnabled(mContext, FeatureFlags.SILKY_HOME)) {
+            FeatureFlagUtils.setEnabled(mContext, FeatureFlags.SILKY_HOME, false);
+        }
+    }
+
     @Test
     public void shouldHoldAppContext() {
         assertThat(mImpl.mContext).isEqualTo(mContext.getApplicationContext());
@@ -670,4 +680,31 @@
         assertThat(argument.getValue().getIdentifier()).isEqualTo(0);
         verify(mActivity, never()).getSupportFragmentManager();
     }
+
+    @Test
+    public void bindPreference_silkyHomeEnabled_shouldNotBindHomepageTileSummary() {
+        FeatureFlagUtils.setEnabled(mContext, FeatureFlags.SILKY_HOME, true);
+        final Preference preference = new Preference(RuntimeEnvironment.application);
+        final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
+
+        mImpl.bindPreferenceToTileAndGetObservers(mActivity, mForceRoundedIcon,
+                MetricsEvent.VIEW_UNKNOWN, preference, tile, null /*key */,
+                Preference.DEFAULT_ORDER);
+
+        assertThat(preference.getSummary()).isNull();
+    }
+
+    @Test
+    public void bindPreference_silkyHomeEnabled_shouldBindSubpageTileSummary() {
+        FeatureFlagUtils.setEnabled(mContext, FeatureFlags.SILKY_HOME, true);
+        final Preference preference = new Preference(RuntimeEnvironment.application);
+        final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_SYSTEM);
+
+        mImpl.bindPreferenceToTileAndGetObservers(mActivity, mForceRoundedIcon,
+                MetricsEvent.VIEW_UNKNOWN, preference, tile, null /*key */,
+                Preference.DEFAULT_ORDER);
+
+        assertThat(preference.getSummary()).isEqualTo(
+                mContext.getText(R.string.about_settings_summary));
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/TopLevelStoragePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/TopLevelStoragePreferenceControllerTest.java
index 7d7be6c..e19066a 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/TopLevelStoragePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/TopLevelStoragePreferenceControllerTest.java
@@ -28,12 +28,15 @@
 import android.icu.text.NumberFormat;
 import android.os.storage.VolumeInfo;
 import android.text.format.Formatter;
+import android.util.FeatureFlagUtils;
 
 import androidx.preference.Preference;
 
 import com.android.settings.R;
+import com.android.settings.core.FeatureFlags;
 import com.android.settingslib.deviceinfo.StorageManagerVolumeProvider;
 
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -68,6 +71,13 @@
         mController = new TopLevelStoragePreferenceController(mContext, "test_key");
     }
 
+    @After
+    public void tearDown() {
+        if (FeatureFlagUtils.isEnabled(mContext, FeatureFlags.SILKY_HOME)) {
+            FeatureFlagUtils.setEnabled(mContext, FeatureFlags.SILKY_HOME, false);
+        }
+    }
+
     @Test
     public void updateSummary_shouldDisplayUsedPercentAndFreeSpace() throws Exception {
         final VolumeInfo volumeInfo = mVolumes.get(0);
@@ -90,4 +100,11 @@
         assertThat(preference.getSummary()).isEqualTo(
                 mContext.getString(R.string.storage_summary, percentage, freeSpace));
     }
+
+    @Test
+    public void refreshSummary_silkyHomeEnabled_shouldBeNull() {
+        FeatureFlagUtils.setEnabled(mContext, FeatureFlags.SILKY_HOME, true);
+
+        assertThat(mController.getSummary()).isNull();
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/aboutphone/TopLevelAboutDevicePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/aboutphone/TopLevelAboutDevicePreferenceControllerTest.java
index 988a94b..16c77a4 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/aboutphone/TopLevelAboutDevicePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/aboutphone/TopLevelAboutDevicePreferenceControllerTest.java
@@ -23,7 +23,11 @@
 import android.content.Context;
 import android.os.Build;
 import android.provider.Settings.Global;
+import android.util.FeatureFlagUtils;
 
+import com.android.settings.core.FeatureFlags;
+
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -42,6 +46,13 @@
         mController = new TopLevelAboutDevicePreferenceController(mContext, "test_key");
     }
 
+    @After
+    public void teardown() {
+        if (FeatureFlagUtils.isEnabled(mContext, FeatureFlags.SILKY_HOME)) {
+            FeatureFlagUtils.setEnabled(mContext, FeatureFlags.SILKY_HOME, false);
+        }
+    }
+
     @Test
     public void getAvailabilityState_shouldBeAvailable() {
         assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
@@ -57,4 +68,12 @@
         Global.putString(mContext.getContentResolver(), Global.DEVICE_NAME, "Test");
         assertThat(mController.getSummary().toString()).isEqualTo("Test");
     }
+
+    @Test
+    public void getSummary_silkyHomeEnabled_shouldBeNull() {
+        FeatureFlagUtils.setEnabled(mContext, FeatureFlags.SILKY_HOME, true);
+        Global.putString(mContext.getContentResolver(), Global.DEVICE_NAME, "Test");
+
+        assertThat(mController.getSummary()).isNull();
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/display/TopLevelDisplayPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/TopLevelDisplayPreferenceControllerTest.java
index d16a6d2..a52ad71 100644
--- a/tests/robotests/src/com/android/settings/display/TopLevelDisplayPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/TopLevelDisplayPreferenceControllerTest.java
@@ -31,9 +31,12 @@
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
+import android.util.FeatureFlagUtils;
 
 import com.android.settings.R;
+import com.android.settings.core.FeatureFlags;
 
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -65,6 +68,13 @@
         mController = new TopLevelDisplayPreferenceController(mContext, "test_key");
     }
 
+    @After
+    public void tearDown() {
+        if (FeatureFlagUtils.isEnabled(mContext, FeatureFlags.SILKY_HOME)) {
+            FeatureFlagUtils.setEnabled(mContext, FeatureFlags.SILKY_HOME, false);
+        }
+    }
+
     @Test
     public void getAvailibilityStatus_availableByDefault() {
         assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
@@ -109,4 +119,11 @@
         assertThat(mController.getSummary())
                 .isEqualTo(mContext.getText(R.string.display_dashboard_nowallpaper_summary));
     }
+
+    @Test
+    public void getSummary_silkyHomeEnabled_shouldBeNull() {
+        FeatureFlagUtils.setEnabled(mContext, FeatureFlags.SILKY_HOME, true);
+
+        assertThat(mController.getSummary()).isNull();
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceControllerTest.java
index 3775802..b356143 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceControllerTest.java
@@ -23,7 +23,11 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import android.content.Context;
+import android.util.FeatureFlagUtils;
 
+import com.android.settings.core.FeatureFlags;
+
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -42,6 +46,13 @@
         mController = new TopLevelBatteryPreferenceController(mContext, "test_key");
     }
 
+    @After
+    public void tearDown() {
+        if (FeatureFlagUtils.isEnabled(mContext, FeatureFlags.SILKY_HOME)) {
+            FeatureFlagUtils.setEnabled(mContext, FeatureFlags.SILKY_HOME, false);
+        }
+    }
+
     @Test
     public void getAvailibilityStatus_availableByDefault() {
         assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
@@ -66,4 +77,11 @@
         info.chargeLabel = "5% - charging";
         assertThat(getDashboardLabel(mContext, info)).isEqualTo("5% - charging");
     }
+
+    @Test
+    public void getSummary_silkyHomeEnabled_shouldBeNull() {
+        FeatureFlagUtils.setEnabled(mContext, FeatureFlags.SILKY_HOME, true);
+
+        assertThat(mController.getSummary()).isNull();
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/location/TopLevelLocationPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/location/TopLevelLocationPreferenceControllerTest.java
index 68e7f88..2fa7413 100644
--- a/tests/robotests/src/com/android/settings/location/TopLevelLocationPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/location/TopLevelLocationPreferenceControllerTest.java
@@ -20,9 +20,12 @@
 
 import android.content.Context;
 import android.location.LocationManager;
+import android.util.FeatureFlagUtils;
 
 import com.android.settings.R;
+import com.android.settings.core.FeatureFlags;
 
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -43,6 +46,13 @@
         mLocationManager = (LocationManager) mContext.getSystemService(Context.LOCATION_SERVICE);
     }
 
+    @After
+    public void tearDown() {
+        if (FeatureFlagUtils.isEnabled(mContext, FeatureFlags.SILKY_HOME)) {
+            FeatureFlagUtils.setEnabled(mContext, FeatureFlags.SILKY_HOME, false);
+        }
+    }
+
     @Test
     public void isAvailable_byDefault_shouldReturnTrue() {
         assertThat(mController.isAvailable()).isTrue();
@@ -83,4 +93,11 @@
                         R.plurals.location_settings_summary_location_on,
                         LOCATION_APP_COUNT, LOCATION_APP_COUNT));
     }
+
+    @Test
+    public void getSummary_silkyHomeEnabled_shouldBeNull() {
+        FeatureFlagUtils.setEnabled(mContext, FeatureFlags.SILKY_HOME, true);
+
+        assertThat(mController.getSummary()).isNull();
+    }
 }
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/settings/network/TopLevelNetworkEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/TopLevelNetworkEntryPreferenceControllerTest.java
index a3f0c90..857b3eb 100644
--- a/tests/robotests/src/com/android/settings/network/TopLevelNetworkEntryPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/TopLevelNetworkEntryPreferenceControllerTest.java
@@ -24,7 +24,9 @@
 
 import android.content.Context;
 import android.os.UserManager;
+import android.util.FeatureFlagUtils;
 
+import com.android.settings.core.FeatureFlags;
 import com.android.settings.testutils.shadow.ShadowRestrictedLockUtilsInternal;
 import com.android.settings.testutils.shadow.ShadowUtils;
 import com.android.settings.wifi.WifiPrimarySwitchPreferenceController;
@@ -77,6 +79,10 @@
     @After
     public void tearDown() {
         ShadowUtils.reset();
+
+        if (FeatureFlagUtils.isEnabled(mContext, FeatureFlags.SILKY_HOME)) {
+            FeatureFlagUtils.setEnabled(mContext, FeatureFlags.SILKY_HOME, false);
+        }
     }
 
     @Test
@@ -103,4 +109,11 @@
 
         assertThat(mController.getSummary()).isEqualTo("Wi\u2011Fi and data usage");
     }
+
+    @Test
+    public void getSummary_silkyHomeEnabled_shouldBeNull() {
+        FeatureFlagUtils.setEnabled(mContext, FeatureFlags.SILKY_HOME, true);
+
+        assertThat(mController.getSummary()).isNull();
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/security/TopLevelSecurityPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/security/TopLevelSecurityEntryPreferenceControllerTest.java
similarity index 87%
rename from tests/robotests/src/com/android/settings/security/TopLevelSecurityPreferenceControllerTest.java
rename to tests/robotests/src/com/android/settings/security/TopLevelSecurityEntryPreferenceControllerTest.java
index 4e18a3e..33d22d4 100644
--- a/tests/robotests/src/com/android/settings/security/TopLevelSecurityPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/security/TopLevelSecurityEntryPreferenceControllerTest.java
@@ -16,6 +16,8 @@
 
 package com.android.settings.security;
 
+import static com.google.common.truth.Truth.assertThat;
+
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
@@ -23,9 +25,12 @@
 import android.content.pm.PackageManager;
 import android.hardware.face.FaceManager;
 import android.hardware.fingerprint.FingerprintManager;
+import android.util.FeatureFlagUtils;
 
 import com.android.settings.R;
+import com.android.settings.core.FeatureFlags;
 
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -35,7 +40,7 @@
 import org.robolectric.RobolectricTestRunner;
 
 @RunWith(RobolectricTestRunner.class)
-public class TopLevelSecurityPreferenceControllerTest {
+public class TopLevelSecurityEntryPreferenceControllerTest {
 
     @Mock(answer = Answers.RETURNS_DEEP_STUBS)
     private Context mContext;
@@ -55,6 +60,13 @@
         mController = new TopLevelSecurityEntryPreferenceController(mContext, "test_key");
     }
 
+    @After
+    public void tearDown() {
+        if (FeatureFlagUtils.isEnabled(mContext, FeatureFlags.SILKY_HOME)) {
+            FeatureFlagUtils.setEnabled(mContext, FeatureFlags.SILKY_HOME, false);
+        }
+    }
+
     @Test
     public void geSummary_hasFace_hasStaticSummary() {
         when(mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_FACE))
@@ -128,4 +140,11 @@
 
         verify(mContext).getText(R.string.security_dashboard_summary_no_fingerprint);
     }
+
+    @Test
+    public void getSummary_silkyHomeEnabled_shouldBeNull() {
+        FeatureFlagUtils.setEnabled(mContext, FeatureFlags.SILKY_HOME, true);
+
+        assertThat(mController.getSummary()).isNull();
+    }
 }
diff --git a/tests/unit/AndroidTest.xml b/tests/unit/AndroidTest.xml
index 9ce7657..b9321a3 100644
--- a/tests/unit/AndroidTest.xml
+++ b/tests/unit/AndroidTest.xml
@@ -19,7 +19,6 @@
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="SettingsUnitTests.apk" />
-        <option name="test-file-name" value="InstrumentedEntitlementApp.apk" />
     </target_preparer>
 
     <option name="test-tag" value="SettingsUnitTests" />
