Merge "[Settings] Only display 1 SIM UI when multiple with same group UUID"
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/EnabledNetworkModePreferenceController.java b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java
index 6327375..fd585a1 100644
--- a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java
+++ b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java
@@ -365,9 +365,15 @@
         }
 
         private int getPreferredNetworkMode() {
-            return Settings.Global.getInt(mContext.getContentResolver(),
+            int networkMode = Settings.Global.getInt(mContext.getContentResolver(),
                     Settings.Global.PREFERRED_NETWORK_MODE + mSubId,
                     TelephonyManager.DEFAULT_PREFERRED_NETWORK_MODE);
+            if (!showNrList()) {
+                Log.d(LOG_TAG, "Network mode :" + networkMode + " reduce NR");
+                networkMode = reduceNrToLteNetworkType(networkMode);
+            }
+            Log.d(LOG_TAG, "getPreferredNetworkMode: " + networkMode);
+            return networkMode;
         }
 
         private EnabledNetworks getEnabledNetworkType() {
@@ -635,6 +641,40 @@
             }
         }
 
+        /**
+         * Transform NR5G network mode to LTE network mode.
+         *
+         * @param networkType an 5G network mode.
+         * @return the corresponding network mode without 5G.
+         */
+        private static int reduceNrToLteNetworkType(int networkType) {
+            switch(networkType) {
+                case TelephonyManagerConstants.NETWORK_MODE_NR_LTE:
+                    return TelephonyManagerConstants.NETWORK_MODE_LTE_ONLY;
+                case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO:
+                    return TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO;
+                case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_GSM_WCDMA:
+                    return TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA;
+                case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA:
+                    return TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA;
+                case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_WCDMA:
+                    return TelephonyManagerConstants.NETWORK_MODE_LTE_WCDMA;
+                case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA:
+                    return TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA;
+                case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM:
+                    return TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM;
+                case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_WCDMA:
+                    return TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_WCDMA;
+                case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA:
+                    return TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA;
+                case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
+                    return TelephonyManagerConstants
+                            .NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA;
+                default:
+                    return networkType; // do nothing
+            }
+        }
+
         private void setPreferenceValueAndSummary() {
             setPreferenceValueAndSummary(getPreferredNetworkMode());
         }
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/src/com/android/settings/wifi/details2/WifiNetworkDetailsFragment2.java b/src/com/android/settings/wifi/details2/WifiNetworkDetailsFragment2.java
index 76a8c5f..d0708ea 100644
--- a/src/com/android/settings/wifi/details2/WifiNetworkDetailsFragment2.java
+++ b/src/com/android/settings/wifi/details2/WifiNetworkDetailsFragment2.java
@@ -36,6 +36,7 @@
 import android.view.MenuInflater;
 import android.view.MenuItem;
 
+import androidx.annotation.VisibleForTesting;
 import androidx.preference.PreferenceScreen;
 
 import com.android.settings.R;
@@ -78,7 +79,8 @@
     private HandlerThread mWorkerThread;
     private WifiDetailPreferenceController2 mWifiDetailPreferenceController2;
     private List<WifiDialog2.WifiDialog2Listener> mWifiDialogListeners = new ArrayList<>();
-    private List<AbstractPreferenceController> mControllers;
+    @VisibleForTesting
+    List<AbstractPreferenceController> mControllers;
 
     @Override
     public void onDestroy() {
@@ -255,6 +257,11 @@
      * API call for refreshing the preferences in this fragment.
      */
     public void refreshPreferences() {
+        updatePreferenceStates();
+        displayPreferenceControllers();
+    }
+
+    protected void displayPreferenceControllers() {
         final PreferenceScreen screen = getPreferenceScreen();
         for (AbstractPreferenceController controller : mControllers) {
             // WifiDetailPreferenceController2 gets the callback WifiEntryCallback#onUpdated,
diff --git a/src/com/android/settings/wifi/details2/WifiPrivacyPreferenceController2.java b/src/com/android/settings/wifi/details2/WifiPrivacyPreferenceController2.java
index a0d4b16..d6e1b60 100644
--- a/src/com/android/settings/wifi/details2/WifiPrivacyPreferenceController2.java
+++ b/src/com/android/settings/wifi/details2/WifiPrivacyPreferenceController2.java
@@ -69,12 +69,13 @@
     public void updateState(Preference preference) {
         final DropDownPreference dropDownPreference = (DropDownPreference) preference;
         final int randomizationLevel = getRandomizationValue();
+        final boolean isSelectable = mWifiEntry.canSetPrivacy();
+        preference.setSelectable(isSelectable);
         dropDownPreference.setValue(Integer.toString(randomizationLevel));
         updateSummary(dropDownPreference, randomizationLevel);
 
-        // Makes preference not selectable, when this is a ephemeral network.
-        if (!mWifiEntry.canSetPrivacy()) {
-            preference.setSelectable(false);
+        // If the preference cannot be selectable, display a temporary network in the summary.
+        if (!isSelectable) {
             dropDownPreference.setSummary(R.string.wifi_privacy_settings_ephemeral_summary);
         }
     }
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/network/telephony/EnabledNetworkModePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerTest.java
index e38bd62..e519b9a 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerTest.java
@@ -222,6 +222,28 @@
     }
 
     @Test
+    public void updateState_NrEnableBoolFalse_5gOptionHidden() {
+        mockEnabledNetworkMode(TelephonyManagerConstants.NETWORK_MODE_NR_LTE_GSM_WCDMA);
+        mockAccessFamily(TelephonyManager.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA);
+        mPersistableBundle.putBoolean(CarrierConfigManager.KEY_NR_ENABLED_BOOL, false);
+
+        mController.init(mLifecycle, SUB_ID);
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID,
+                TelephonyManagerConstants.NETWORK_MODE_NR_LTE_GSM_WCDMA);
+
+        mController.updateState(mPreference);
+
+        assertThat(mPreference.getValue()).isEqualTo(
+                String.valueOf(
+                        TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA));
+        assertThat(mPreference.getEntryValues())
+                .asList()
+                .doesNotContain(
+                        String.valueOf(TelephonyManager.NETWORK_MODE_NR_LTE_GSM_WCDMA));
+    }
+
+    @Test
     public void updateState_GlobalDisAllowed5g_GlobalWithoutNR() {
         mockAccessFamily(TelephonyManager.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA);
         mockAllowedNetworkTypes(DISABLED_5G_NETWORK_TYPE);
@@ -393,6 +415,11 @@
         } else if (networkMode == TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA) {
             mockPhoneType(TelephonyManager.PHONE_TYPE_GSM);
             mPersistableBundle.putBoolean(CarrierConfigManager.KEY_SUPPORT_TDSCDMA_BOOL, true);
+        } else if (networkMode
+                == TelephonyManagerConstants.NETWORK_MODE_NR_LTE_GSM_WCDMA) {
+            mockPhoneType(TelephonyManager.PHONE_TYPE_GSM);
+            mPersistableBundle.putBoolean(CarrierConfigManager.KEY_PREFER_2G_BOOL, true);
+            mPersistableBundle.putBoolean(CarrierConfigManager.KEY_LTE_ENABLED_BOOL, true);
         }
     }
 
@@ -407,6 +434,6 @@
     }
 
     private void mockPhoneType(int phoneType) {
-        doReturn(TelephonyManager.PHONE_TYPE_GSM).when(mTelephonyManager).getPhoneType();
+        doReturn(phoneType).when(mTelephonyManager).getPhoneType();
     }
 }
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/robotests/src/com/android/settings/wifi/details2/WifiNetworkDetailsFragment2Test.java b/tests/robotests/src/com/android/settings/wifi/details2/WifiNetworkDetailsFragment2Test.java
index 4b1a8ca..e0fb578 100644
--- a/tests/robotests/src/com/android/settings/wifi/details2/WifiNetworkDetailsFragment2Test.java
+++ b/tests/robotests/src/com/android/settings/wifi/details2/WifiNetworkDetailsFragment2Test.java
@@ -24,6 +24,7 @@
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
@@ -32,14 +33,25 @@
 import android.view.MenuInflater;
 import android.view.MenuItem;
 
+import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
+
+import com.android.settings.core.BasePreferenceController;
+import com.android.settingslib.core.AbstractPreferenceController;
+
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.robolectric.RobolectricTestRunner;
+import org.robolectric.RuntimeEnvironment;
+
+import java.util.ArrayList;
 
 @RunWith(RobolectricTestRunner.class)
 public class WifiNetworkDetailsFragment2Test {
 
+    final String TEST_PREFERENCE_KEY = "TEST_PREFERENCE_KEY";
+
     private WifiNetworkDetailsFragment2 mFragment;
 
     @Before
@@ -73,4 +85,44 @@
 
         verify(menuItem).setIcon(com.android.internal.R.drawable.ic_mode_edit);
     }
+
+    @Test
+    public void refreshPreferences_controllerShouldUpdateStateAndDisplayPreference() {
+        final FakeFragment fragment = spy(new FakeFragment());
+        final PreferenceScreen screen = mock(PreferenceScreen.class);
+        final Preference preference = mock(Preference.class);
+        final TestController controller = mock(TestController.class);
+        doReturn(screen).when(fragment).getPreferenceScreen();
+        doReturn(preference).when(screen).findPreference(TEST_PREFERENCE_KEY);
+        doReturn(TEST_PREFERENCE_KEY).when(controller).getPreferenceKey();
+        fragment.mControllers = new ArrayList<>();
+        fragment.mControllers.add(controller);
+        fragment.addPreferenceController(controller);
+
+        fragment.refreshPreferences();
+
+        verify(controller).updateState(preference);
+        verify(controller).displayPreference(screen);
+    }
+
+    // Fake WifiNetworkDetailsFragment2 to override the protected method as public.
+    public class FakeFragment extends WifiNetworkDetailsFragment2 {
+
+        @Override
+        public void addPreferenceController(AbstractPreferenceController controller) {
+            super.addPreferenceController(controller);
+        }
+    }
+
+    public class TestController extends BasePreferenceController {
+
+        public TestController() {
+            super(RuntimeEnvironment.application, TEST_PREFERENCE_KEY);
+        }
+
+        @Override
+        public int getAvailabilityStatus() {
+            return AVAILABLE;
+        }
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/wifi/details2/WifiPrivacyPreferenceController2Test.java b/tests/robotests/src/com/android/settings/wifi/details2/WifiPrivacyPreferenceController2Test.java
index 0414b1c..d3244fa 100644
--- a/tests/robotests/src/com/android/settings/wifi/details2/WifiPrivacyPreferenceController2Test.java
+++ b/tests/robotests/src/com/android/settings/wifi/details2/WifiPrivacyPreferenceController2Test.java
@@ -89,7 +89,15 @@
     }
 
     @Test
-    public void testUpdateState_canSetPrivacy_shouldBeSelectable() {
+    public void testUpdateState_canSetPrivacyInNextUpdate_shouldBeSelectable() {
+        // Return false in WifiEntry#canSetPrivacy to make preference un-selectable first.
+        when(mMockWifiEntry.canSetPrivacy()).thenReturn(false);
+
+        mPreferenceController.updateState(mDropDownPreference);
+
+        assertThat(mDropDownPreference.isSelectable()).isFalse();
+
+        // Return true in WifiEntry#canSetPrivacy to verify preference back to selectable.
         when(mMockWifiEntry.canSetPrivacy()).thenReturn(true);
 
         mPreferenceController.updateState(mDropDownPreference);
@@ -98,7 +106,15 @@
     }
 
     @Test
-    public void testUpdateState_canNotSetPrivacy_shouldNotSelectable() {
+    public void testUpdateState_canNotSetPrivacyInNextUpdate_shouldNotBeSelectable() {
+        // Return true in WifiEntry#canSetPrivacy to make preference selectable first.
+        when(mMockWifiEntry.canSetPrivacy()).thenReturn(true);
+
+        mPreferenceController.updateState(mDropDownPreference);
+
+        assertThat(mDropDownPreference.isSelectable()).isTrue();
+
+        // Return false in WifiEntry#canSetPrivacy to verify preference back to un-selectable.
         when(mMockWifiEntry.canSetPrivacy()).thenReturn(false);
 
         mPreferenceController.updateState(mDropDownPreference);
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" />
diff --git a/tests/unit/README b/tests/unit/README
index f5fdea0..5a85603 100644
--- a/tests/unit/README
+++ b/tests/unit/README
@@ -1,3 +1,11 @@
+The simplest way to run all SettingsUnitTests is with atest
+$ atest SettingsUnitTests
+
+A single class can also be tested with the following command
+$ atest -c <YourClassName>
+
+// The following instrutions show how to run the test suite using make + adb //
+
 To build the tests you can use the following command at the root of your android source tree
 $ make SettingsUnitTests