Merge "Fix test failure of AvailableMediaDeviceGroupControllerTest" into main
diff --git a/TEST_MAPPING b/TEST_MAPPING
index 4e85cb8..9722a85 100644
--- a/TEST_MAPPING
+++ b/TEST_MAPPING
@@ -28,6 +28,14 @@
       ]
     },
     {
+      "name": "SettingsUITests",
+      "options": [
+        {
+          "exclude-annotation": "org.junit.Ignore"
+        }
+      ]
+    },
+    {
       "name": "SettingsPerfTests"
     }
   ]
diff --git a/res/layout/data_usage_summary_preference.xml b/res/layout/data_usage_summary_preference.xml
index 856d146..24399ac 100644
--- a/res/layout/data_usage_summary_preference.xml
+++ b/res/layout/data_usage_summary_preference.xml
@@ -121,14 +121,5 @@
 
     </LinearLayout>
 
-    <Button
-        android:id="@+id/launch_mdp_app_button"
-        android:layout_marginTop="12dp"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_gravity="start"
-        android:text="@string/launch_mdp_app_text"
-        style="@style/ActionPrimaryButton" />
-
 </LinearLayout>
 
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 5e7f980..e9a547c 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1175,13 +1175,38 @@
 
     <!-- Title for the subpage in the "Security & privacy". This page consists of the more security and privacy settings. Can be navigated by Settings -> Security & privacy -> More security & privacy [CHAR LIMIT=NONE] -->
     <string name="more_security_privacy_settings">More security &amp; privacy</string>
-    <!-- Title for the section that has security entries in the More security & privacy page. [CHAR LIMIT=60] -->
+    <!-- Title for the section that has security entries in the More security & privacy page. Also used for Private Space security category. [CHAR LIMIT=60] -->
     <string name="security_header">Security</string>
     <!-- Title for the section that has privacy entries in the More security & privacy page. [CHAR LIMIT=60] -->
     <string name="privacy_header">Privacy</string>
     <!-- Title for the section that has work profile entries in the More security & privacy page. [CHAR LIMIT=60] -->
     <string name="work_profile_category_header">Work profile</string>
 
+    <!-- Title for the Private Space page. [CHAR LIMIT=60] -->
+    <string name="private_space_title">Private Space</string>
+    <!-- Summary for the Private Space page. [CHAR LIMIT=NONE] -->
+    <string name="private_space_summary">Hide apps in a private folder</string>
+    <!-- Title for the Private Space one lock preference. [CHAR LIMIT=60] -->
+    <string name="private_space_one_lock_title">Unlock using screen lock</string>
+    <!-- Title for the preference to hide Private Space. [CHAR LIMIT=60] -->
+    <string name="private_space_hide_title">Show Private Space</string>
+    <!-- System category for the Private Space page. [CHAR LIMIT=30] -->
+    <string name="private_space_category_system">System</string>
+    <!-- Title for the preference to create Private Space. [CHAR LIMIT=60] -->
+    <string name="private_space_create_title">Create Private Space</string>
+    <!-- Title for the preference to delete Private Space. [CHAR LIMIT=60] -->
+    <string name="private_space_delete_title">Delete Private Space</string>
+    <!-- Toast to show when the private space was created. [CHAR LIMIT=NONE] -->
+    <string name="private_space_created">Private Space successfully created</string>
+    <!-- Toast to show when the private space already exists. [CHAR LIMIT=NONE] -->
+    <string name="private_space_already_exists">Private Space already exists</string>
+    <!-- Toast to show when the private space could not be created. [CHAR LIMIT=NONE] -->
+    <string name="private_space_create_failed">Private Space could not be created</string>
+    <!-- Toast to show when the private space was deleted. [CHAR LIMIT=NONE] -->
+    <string name="private_space_deleted">Private Space successfully deleted</string>
+    <!-- Toast to show when the private space could not be deleted. [CHAR LIMIT=NONE] -->
+    <string name="private_space_delete_failed">Private Space could not be deleted</string>
+
     <!-- Text shown when "Add fingerprint" button is disabled -->
     <string name="fingerprint_add_max">You can add up to <xliff:g id="count" example="5">%d</xliff:g> fingerprints</string>
     <!-- Text shown when users has enrolled a maximum number of fingerprints [CHAR LIMIT=NONE] -->
@@ -9740,9 +9765,6 @@
     <!-- Informational text about recent update time only, without carrier [CHAR LIMIT=30] -->
     <string name="no_carrier_update_now_text">Updated just now</string>
 
-    <!-- Button to launch external data plan app [CHAR LIMIT=30] -->
-    <string name="launch_mdp_app_text">View plan</string>
-
     <!-- Alternate launch button text for Wi-Fi only mode [CHAR LIMIT=30] -->
     <string name="launch_wifi_text">View details</string>
 
diff --git a/res/xml/private_space_settings.xml b/res/xml/private_space_settings.xml
new file mode 100644
index 0000000..08053e0
--- /dev/null
+++ b/res/xml/private_space_settings.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2023 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:key="private_space_title"
+    android:title="@string/private_space_title">
+
+    <PreferenceCategory
+        android:title="@string/security_header">
+
+        <SwitchPreference
+            android:key="private_space_use_one_lock"
+            android:title="@string/private_space_one_lock_title"
+            settings:controller="com.android.settings.privatespace.UseOneLockController"
+            settings:searchable="false" />
+
+        <SwitchPreference
+            android:key="private_space_hidden"
+            android:title="@string/private_space_hide_title"
+            settings:controller="com.android.settings.privatespace.HidePrivateSpaceController"
+            settings:searchable="false" />
+
+    </PreferenceCategory>
+
+    <PreferenceCategory
+        android:title="@string/private_space_category_system">
+
+        <Preference
+            android:key="private_space_create"
+            android:title="@string/private_space_create_title"
+            settings:controller="com.android.settings.privatespace.CreatePrivateSpaceController"
+            settings:searchable="false" />
+
+        <Preference
+            android:key="private_space_delete"
+            android:title="@string/private_space_delete_title"
+            settings:controller="com.android.settings.privatespace.DeletePrivateSpaceController"
+            settings:searchable="false" />
+
+    </PreferenceCategory>
+
+</PreferenceScreen>
\ No newline at end of file
diff --git a/src/com/android/settings/applications/appcompat/UserAspectRatioDetails.java b/src/com/android/settings/applications/appcompat/UserAspectRatioDetails.java
index fd831cd..68ebf8a 100644
--- a/src/com/android/settings/applications/appcompat/UserAspectRatioDetails.java
+++ b/src/com/android/settings/applications/appcompat/UserAspectRatioDetails.java
@@ -37,10 +37,14 @@
 
 import androidx.annotation.NonNull;
 import androidx.appcompat.app.AlertDialog;
+import androidx.preference.Preference;
 
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.settings.R;
-import com.android.settings.applications.AppInfoWithHeader;
+import com.android.settings.Utils;
+import com.android.settings.applications.AppInfoBase;
+import com.android.settings.widget.EntityHeaderController;
+import com.android.settingslib.applications.AppUtils;
 import com.android.settingslib.widget.ActionButtonsPreference;
 
 import java.util.ArrayList;
@@ -49,7 +53,7 @@
 /**
  * App specific activity to show aspect ratio overrides
  */
-public class UserAspectRatioDetails extends AppInfoWithHeader implements
+public class UserAspectRatioDetails extends AppInfoBase implements
         RadioWithImagePreference.OnClickListener {
     private static final String TAG = UserAspectRatioDetails.class.getSimpleName();
 
@@ -178,6 +182,24 @@
         }
     }
 
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+        final Preference pref = EntityHeaderController
+                .newInstance(getActivity(), this, null /* header */)
+                .setIcon(Utils.getBadgedIcon(getContext(), mPackageInfo.applicationInfo))
+                .setLabel(mPackageInfo.applicationInfo.loadLabel(mPm))
+                .setIsInstantApp(AppUtils.isInstant(mPackageInfo.applicationInfo))
+                .setPackageName(mPackageName)
+                .setUid(mPackageInfo.applicationInfo.uid)
+                .setHasAppInfoLink(true)
+                .setButtonActions(EntityHeaderController.ActionType.ACTION_NONE,
+                        EntityHeaderController.ActionType.ACTION_NONE)
+                .done(getPrefContext());
+
+        getPreferenceScreen().addPreference(pref);
+    }
+
     private void initPreferences() {
         addPreferencesFromResource(R.xml.user_aspect_ratio_details);
 
diff --git a/src/com/android/settings/applications/credentials/CredentialManagerPreferenceController.java b/src/com/android/settings/applications/credentials/CredentialManagerPreferenceController.java
index f704ca8..182e5ae 100644
--- a/src/com/android/settings/applications/credentials/CredentialManagerPreferenceController.java
+++ b/src/com/android/settings/applications/credentials/CredentialManagerPreferenceController.java
@@ -47,6 +47,8 @@
 import android.text.TextUtils;
 import android.util.IconDrawableFactory;
 import android.util.Log;
+import android.view.View;
+import android.widget.Switch;
 
 import androidx.appcompat.app.AlertDialog;
 import androidx.core.content.ContextCompat;
@@ -58,7 +60,7 @@
 import androidx.preference.Preference;
 import androidx.preference.PreferenceGroup;
 import androidx.preference.PreferenceScreen;
-import androidx.preference.SwitchPreference;
+import androidx.preference.PreferenceViewHolder;
 
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.content.PackageMonitor;
@@ -67,6 +69,7 @@
 import com.android.settings.core.BasePreferenceController;
 import com.android.settings.dashboard.DashboardFragment;
 import com.android.settingslib.utils.ThreadUtils;
+import com.android.settingslib.widget.TwoTargetPreference;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -100,7 +103,7 @@
     private final Set<String> mEnabledPackageNames;
     private final @Nullable CredentialManager mCredentialManager;
     private final Executor mExecutor;
-    private final Map<String, SwitchPreference> mPrefs = new HashMap<>(); // key is package name
+    private final Map<String, CombiPreference> mPrefs = new HashMap<>(); // key is package name
     private final List<ServiceInfo> mPendingServiceInfos = new ArrayList<>();
     private final Handler mHandler = new Handler();
     private final SettingContentObserver mSettingsContentObserver;
@@ -299,8 +302,36 @@
                 null);
     }
 
+    private Set<ComponentName> buildComponentNameSet(List<CredentialProviderInfo> providers) {
+        Set<ComponentName> output = new HashSet<>();
+
+        for (CredentialProviderInfo cpi : providers) {
+            output.add(cpi.getComponentName());
+        }
+
+        return output;
+    }
+
     private void updateFromExternal() {
-        update();
+        if (mCredentialManager == null) {
+            return;
+        }
+
+        // Get the list of new providers and components.
+        List<CredentialProviderInfo> newProviders =
+                mCredentialManager.getCredentialProviderServices(
+                        getUser(), CredentialManager.PROVIDER_FILTER_USER_PROVIDERS_ONLY);
+        Set<ComponentName> newComponents = buildComponentNameSet(newProviders);
+
+        // Get the list of old components
+        Set<ComponentName> oldComponents = buildComponentNameSet(mServices);
+
+        // If the sets are equal then don't update the UI.
+        if (oldComponents.equals(newComponents)) {
+            return;
+        }
+
+        setAvailableServices(newProviders, null);
 
         if (mPreferenceScreen != null) {
             displayPreference(mPreferenceScreen);
@@ -389,7 +420,7 @@
 
     /** Aggregates the list of services and builds a list of UI prefs to show. */
     @VisibleForTesting
-    public Map<String, SwitchPreference> buildPreferenceList(
+    public Map<String, CombiPreference> buildPreferenceList(
             Context context, PreferenceGroup group) {
         // Get the selected autofill provider. If it is the placeholder then replace it with an
         // empty string.
@@ -415,7 +446,7 @@
             return new HashMap<>();
         }
 
-        Map<String, SwitchPreference> output = new HashMap<>();
+        Map<String, CombiPreference> output = new HashMap<>();
         for (CombinedProviderInfo combinedInfo : providers) {
             final String packageName = combinedInfo.getApplicationInfo().packageName;
 
@@ -434,7 +465,7 @@
             CharSequence title = combinedInfo.getAppName(context);
 
             // Build the pref and add it to the output & group.
-            SwitchPreference pref =
+            CombiPreference pref =
                     addProviderPreference(
                             context, title, icon, packageName, combinedInfo.getSettingsSubtitle());
             output.put(packageName, pref);
@@ -449,7 +480,7 @@
 
     /** Creates a preference object based on the provider info. */
     @VisibleForTesting
-    public SwitchPreference createPreference(Context context, CredentialProviderInfo service) {
+    public CombiPreference createPreference(Context context, CredentialProviderInfo service) {
         CharSequence label = service.getLabel(context);
         return addProviderPreference(
                 context,
@@ -510,15 +541,15 @@
         return enabledServices;
     }
 
-    private SwitchPreference addProviderPreference(
+    private CombiPreference addProviderPreference(
             @NonNull Context prefContext,
             @NonNull CharSequence title,
             @Nullable Drawable icon,
             @NonNull String packageName,
             @Nullable CharSequence subtitle) {
-        final SwitchPreference pref = new SwitchPreference(prefContext);
+        final CombiPreference pref =
+                new CombiPreference(prefContext, mEnabledPackageNames.contains(packageName));
         pref.setTitle(title);
-        pref.setChecked(mEnabledPackageNames.contains(packageName));
 
         if (icon != null) {
             pref.setIcon(Utils.getSafeIcon(icon));
@@ -528,10 +559,8 @@
             pref.setSummary(subtitle);
         }
 
-        pref.setOnPreferenceClickListener(
-                p -> {
-                    boolean isChecked = pref.isChecked();
-
+        pref.setPreferenceListener(
+                (p, isChecked) -> {
                     if (isChecked) {
                         if (mEnabledPackageNames.size() >= MAX_SELECTABLE_PROVIDERS) {
                             // Show the error if too many enabled.
@@ -539,11 +568,11 @@
                             final DialogFragment fragment = newErrorDialogFragment();
 
                             if (fragment == null || mFragmentManager == null) {
-                                return true;
+                                return;
                             }
 
                             fragment.show(mFragmentManager, ErrorDialogFragment.TAG);
-                            return true;
+                            return;
                         }
 
                         togglePackageNameEnabled(packageName);
@@ -552,12 +581,9 @@
                         if (mPrefs.containsKey(packageName)) {
                             mPrefs.get(packageName).setChecked(true);
                         }
-                        return true;
                     } else {
                         togglePackageNameDisabled(packageName);
                     }
-
-                    return true;
                 });
 
         return pref;
@@ -836,4 +862,80 @@
             updateFromExternal();
         }
     }
-}
\ No newline at end of file
+
+    /** CombiPreference is a combination of TwoTargetPreference and SwitchPreference. */
+    public static class CombiPreference extends TwoTargetPreference {
+
+        private final Listener mListener = new Listener();
+
+        private class Listener implements View.OnClickListener {
+            @Override
+            public void onClick(View buttonView) {
+                // Forward the event.
+                if (mSwitch != null) {
+                    mOnClickListener.onCheckChanged(CombiPreference.this, mSwitch.isChecked());
+                }
+            }
+        }
+
+        // Stores a reference to the switch view.
+        private @Nullable Switch mSwitch;
+
+        // Switch text for on and off states
+        private @NonNull boolean mChecked = false;
+        private @Nullable OnCombiPreferenceClickListener mOnClickListener = null;
+
+        public interface OnCombiPreferenceClickListener {
+            /** Called when the check is updated */
+            void onCheckChanged(CombiPreference p, boolean isChecked);
+        }
+
+        public CombiPreference(Context context, boolean initialValue) {
+            super(context);
+            mChecked = initialValue;
+        }
+
+        /** Set the new checked value */
+        public void setChecked(boolean isChecked) {
+            // Don't update if we don't need too.
+            if (mChecked == isChecked) {
+                return;
+            }
+
+            mChecked = isChecked;
+
+            if (mSwitch != null) {
+                mSwitch.setChecked(isChecked);
+            }
+        }
+
+        public boolean isChecked() {
+            return mChecked;
+        }
+
+        public void setPreferenceListener(OnCombiPreferenceClickListener onClickListener) {
+            mOnClickListener = onClickListener;
+        }
+
+        @Override
+        protected int getSecondTargetResId() {
+            return R.layout.preference_widget_primary_switch;
+        }
+
+        @Override
+        public void onBindViewHolder(PreferenceViewHolder view) {
+            super.onBindViewHolder(view);
+
+            // Setup the switch.
+            View checkableView = view.itemView.findViewById(R.id.switchWidget);
+            if (checkableView != null && checkableView instanceof Switch) {
+                final Switch switchView = (Switch) checkableView;
+                switchView.setChecked(mChecked);
+                switchView.setOnClickListener(mListener);
+
+                // Store this for later.
+                mSwitch = switchView;
+            }
+        }
+    }
+}
diff --git a/src/com/android/settings/core/FeatureFlags.java b/src/com/android/settings/core/FeatureFlags.java
index fb552d7..3c17e6e 100644
--- a/src/com/android/settings/core/FeatureFlags.java
+++ b/src/com/android/settings/core/FeatureFlags.java
@@ -22,14 +22,10 @@
 public class FeatureFlags {
     public static final String AUDIO_SWITCHER_SETTINGS = "settings_audio_switcher";
     public static final String HEARING_AID_SETTINGS = "settings_bluetooth_hearing_aid";
-    public static final String WIFI_DETAILS_DATAUSAGE_HEADER =
-            "settings_wifi_details_datausage_header";
     public static final String CONTROLLER_ENHANCEMENT = "settings_controller_loading_enhancement";
     public static final String CONDITIONAL_CARDS = "settings_conditionals";
     public static final String TETHER_ALL_IN_ONE = "settings_tether_all_in_one";
     public static final String CONTEXTUAL_HOME = "settings_contextual_home";
     public static final String SETTINGS_SEARCH_ALWAYS_EXPAND =
             "settings_search_always_expand";
-    public static final String PRESS_HOLD_NAV_HANDLE_TO_SEARCH =
-            "settings_press_hold_nav_handle_to_search";
 }
diff --git a/src/com/android/settings/core/SettingsUIDeviceConfig.java b/src/com/android/settings/core/SettingsUIDeviceConfig.java
index 4d96385..2401ff5 100644
--- a/src/com/android/settings/core/SettingsUIDeviceConfig.java
+++ b/src/com/android/settings/core/SettingsUIDeviceConfig.java
@@ -48,6 +48,11 @@
     public static final String BT_LE_AUDIO_DEVICE_DETAIL_ENABLED =
             "bt_le_audio_device_detail_enabled";
     /**
+     * {@code true} if press and hold nav handle to search is enabled.
+     */
+    public static final String PRESS_HOLD_NAV_HANDLE_TO_SEARCH =
+            "press_hold_nav_handle_to_search";
+    /**
      * {@code true} if long press home button to search is enabled.
      */
     public static final String LONG_PRESS_HOME_BUTTON_TO_SEARCH =
diff --git a/src/com/android/settings/datausage/DataUsageSummaryPreference.java b/src/com/android/settings/datausage/DataUsageSummaryPreference.java
index a14fce3..f2fcddd 100644
--- a/src/com/android/settings/datausage/DataUsageSummaryPreference.java
+++ b/src/com/android/settings/datausage/DataUsageSummaryPreference.java
@@ -17,14 +17,10 @@
 package com.android.settings.datausage;
 
 import android.annotation.AttrRes;
-import android.app.settings.SettingsEnums;
 import android.content.Context;
-import android.content.Intent;
 import android.graphics.Typeface;
 import android.icu.text.MessageFormat;
-import android.net.ConnectivityManager;
 import android.net.NetworkTemplate;
-import android.os.Bundle;
 import android.text.Spannable;
 import android.text.SpannableString;
 import android.text.TextUtils;
@@ -32,7 +28,6 @@
 import android.text.style.AbsoluteSizeSpan;
 import android.util.AttributeSet;
 import android.view.View;
-import android.widget.Button;
 import android.widget.LinearLayout;
 import android.widget.ProgressBar;
 import android.widget.TextView;
@@ -42,7 +37,6 @@
 import androidx.preference.PreferenceViewHolder;
 
 import com.android.settings.R;
-import com.android.settings.core.SubSettingLauncher;
 import com.android.settingslib.Utils;
 import com.android.settingslib.net.DataUsageController;
 import com.android.settingslib.utils.StringUtil;
@@ -77,7 +71,6 @@
     /** Name of carrier, or null if not available */
     private CharSequence mCarrierName;
     private CharSequence mLimitInfoText;
-    private Intent mLaunchIntent;
 
     /** Progress to display on ProgressBar */
     private float mProgress;
@@ -92,11 +85,6 @@
     /** The number of bytes used since the start of the cycle. */
     private long mDataplanUse;
 
-    /** WiFi only mode */
-    private boolean mWifiMode;
-    private String mUsagePeriod;
-    private boolean mSingleWifi;    // Shows only one specified WiFi network usage
-
     public DataUsageSummaryPreference(Context context, AttributeSet attrs) {
         super(context, attrs);
         setLayoutResource(R.layout.data_usage_summary_preference);
@@ -115,12 +103,11 @@
     }
 
     public void setUsageInfo(long cycleEnd, long snapshotTime, CharSequence carrierName,
-            int numPlans, Intent launchIntent) {
+            int numPlans) {
         mCycleEndTimeMs = cycleEnd;
         mSnapshotTimeMs = snapshotTime;
         mCarrierName = carrierName;
         mNumPlans = numPlans;
-        mLaunchIntent = launchIntent;
         notifyChanged();
     }
 
@@ -144,13 +131,6 @@
         notifyChanged();
     }
 
-    void setWifiMode(boolean isWifiMode, String usagePeriod, boolean isSingleWifi) {
-        mWifiMode = isWifiMode;
-        mUsagePeriod = usagePeriod;
-        mSingleWifi = isSingleWifi;
-        notifyChanged();
-    }
-
     @Override
     public void onBindViewHolder(PreferenceViewHolder holder) {
         super.onBindViewHolder(holder);
@@ -171,66 +151,13 @@
 
         TextView usageTitle = getUsageTitle(holder);
         TextView carrierInfo = getCarrierInfo(holder);
-        Button launchButton = getLaunchButton(holder);
         TextView limitInfo = getDataLimits(holder);
 
-        if (mWifiMode && mSingleWifi) {
-            updateCycleTimeText(holder);
-
-            usageTitle.setVisibility(View.GONE);
-            launchButton.setVisibility(View.GONE);
-            carrierInfo.setVisibility(View.GONE);
-
-            limitInfo.setVisibility(TextUtils.isEmpty(mLimitInfoText) ? View.GONE : View.VISIBLE);
-            limitInfo.setText(mLimitInfoText);
-        } else if (mWifiMode) {
-            usageTitle.setText(R.string.data_usage_wifi_title);
-            usageTitle.setVisibility(View.VISIBLE);
-            TextView cycleTime = getCycleTime(holder);
-            cycleTime.setText(mUsagePeriod);
-            carrierInfo.setVisibility(View.GONE);
-            limitInfo.setVisibility(View.GONE);
-
-            final long usageLevel = getHistoricalUsageLevel();
-            if (usageLevel > 0L) {
-                launchButton.setOnClickListener((view) -> {
-                    launchWifiDataUsage(getContext());
-                });
-            } else {
-                launchButton.setEnabled(false);
-            }
-            launchButton.setText(R.string.launch_wifi_text);
-            launchButton.setVisibility(View.VISIBLE);
-        } else {
-            usageTitle.setVisibility(mNumPlans > 1 ? View.VISIBLE : View.GONE);
-            updateCycleTimeText(holder);
-            updateCarrierInfo(carrierInfo);
-            if (mLaunchIntent != null) {
-                launchButton.setOnClickListener((view) -> {
-                    getContext().startActivity(mLaunchIntent);
-                });
-                launchButton.setVisibility(View.VISIBLE);
-            } else {
-                launchButton.setVisibility(View.GONE);
-            }
-            limitInfo.setVisibility(
-                    TextUtils.isEmpty(mLimitInfoText) ? View.GONE : View.VISIBLE);
-            limitInfo.setText(mLimitInfoText);
-        }
-    }
-
-    @VisibleForTesting
-    static void launchWifiDataUsage(Context context) {
-        final Bundle args = new Bundle(1);
-        args.putParcelable(DataUsageList.EXTRA_NETWORK_TEMPLATE,
-                new NetworkTemplate.Builder(NetworkTemplate.MATCH_WIFI).build());
-        args.putInt(DataUsageList.EXTRA_NETWORK_TYPE, ConnectivityManager.TYPE_WIFI);
-        final SubSettingLauncher launcher = new SubSettingLauncher(context)
-                .setArguments(args)
-                .setDestination(DataUsageList.class.getName())
-                .setSourceMetricsCategory(SettingsEnums.PAGE_UNKNOWN);
-        launcher.setTitleRes(R.string.wifi_data_usage);
-        launcher.launch();
+        usageTitle.setVisibility(mNumPlans > 1 ? View.VISIBLE : View.GONE);
+        updateCycleTimeText(holder);
+        updateCarrierInfo(carrierInfo);
+        limitInfo.setVisibility(TextUtils.isEmpty(mLimitInfoText) ? View.GONE : View.VISIBLE);
+        limitInfo.setText(mLimitInfoText);
     }
 
     private void updateDataUsageLabels(PreferenceViewHolder holder) {
@@ -404,11 +331,6 @@
     }
 
     @VisibleForTesting
-    protected Button getLaunchButton(PreferenceViewHolder holder) {
-        return (Button) holder.findViewById(R.id.launch_mdp_app_button);
-    }
-
-    @VisibleForTesting
     protected LinearLayout getLabelBar(PreferenceViewHolder holder) {
         return (LinearLayout) holder.findViewById(R.id.label_bar);
     }
diff --git a/src/com/android/settings/datausage/DataUsageSummaryPreferenceController.java b/src/com/android/settings/datausage/DataUsageSummaryPreferenceController.java
index 3948a38..35f5931 100644
--- a/src/com/android/settings/datausage/DataUsageSummaryPreferenceController.java
+++ b/src/com/android/settings/datausage/DataUsageSummaryPreferenceController.java
@@ -18,13 +18,8 @@
 
 import android.app.Activity;
 import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.net.INetworkPolicyManager;
 import android.net.NetworkTemplate;
-import android.os.ServiceManager;
 import android.telephony.SubscriptionInfo;
-import android.telephony.SubscriptionManager;
 import android.telephony.SubscriptionPlan;
 import android.text.TextUtils;
 import android.util.Log;
@@ -83,8 +78,6 @@
     /** The ending time of the billing cycle in ms since the epoch */
     private long mCycleEnd;
 
-    private Intent mManageSubscriptionIntent;
-
     private Future<Long> mHistoricalUsageLevel;
 
     public DataUsageSummaryPreferenceController(Activity activity, int subscriptionId) {
@@ -111,10 +104,6 @@
 
         if (subInfo != null) {
             mDefaultTemplate = DataUsageLib.getMobileTemplate(context, subscriptionId);
-        } else if (DataUsageUtils.hasWifiRadio(context)) {
-            mDefaultTemplate = new NetworkTemplate.Builder(NetworkTemplate.MATCH_WIFI).build();
-        } else {
-            mDefaultTemplate = DataUsageUtils.getDefaultTemplate(context, subscriptionId);
         }
     }
 
@@ -154,8 +143,7 @@
 
     @Override
     public int getAvailabilityStatus(int subId) {
-        return (getSubscriptionInfo(subId) != null)
-                || DataUsageUtils.hasWifiRadio(mContext) ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
+        return getSubscriptionInfo(subId) != null ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
     }
 
     @Override
@@ -163,6 +151,9 @@
         DataUsageSummaryPreference summaryPreference = (DataUsageSummaryPreference) preference;
 
         final SubscriptionInfo subInfo = getSubscriptionInfo(mSubId);
+        if (subInfo == null) {
+            return;
+        }
         if (mDataUsageController == null) {
             updateConfiguration(mContext, mSubId, subInfo);
         }
@@ -175,25 +166,6 @@
 
         long usageLevel = info.usageLevel;
 
-        if (subInfo != null) {
-            summaryPreference.setWifiMode(/* isWifiMode */ false,
-                    /* usagePeriod */ null, /* isSingleWifi */ false);
-        } else {
-            summaryPreference.setWifiMode(/* isWifiMode */ true, /* usagePeriod */
-                    info.period, /* isSingleWifi */ false);
-            summaryPreference.setLimitInfo(null);
-            summaryPreference.setUsageNumbers(displayUsageLevel(usageLevel),
-                    /* dataPlanSize */ -1L,
-                    /* hasMobileData */ true);
-            summaryPreference.setChartEnabled(false);
-            summaryPreference.setUsageInfo(info.cycleEnd,
-                    /* snapshotTime */ -1L,
-                    /* carrierName */ null,
-                    /* numPlans */ 0,
-                    /* launchIntent */ null);
-            return;
-        }
-
         refreshDataplanInfo(info, subInfo);
 
         if (info.warningLevel > 0 && info.limitLevel > 0) {
@@ -229,8 +201,7 @@
                     DataUsageUtils.formatDataUsage(mContext, mDataBarSize));
             summaryPreference.setProgress(mDataplanUse / (float) mDataBarSize);
         }
-        summaryPreference.setUsageInfo(mCycleEnd, mSnapshotTime, mCarrierName,
-                mDataplanCount, mManageSubscriptionIntent);
+        summaryPreference.setUsageInfo(mCycleEnd, mSnapshotTime, mCarrierName, mDataplanCount);
     }
 
     private long displayUsageLevel(long usageLevel) {
@@ -278,53 +249,7 @@
                 mSnapshotTime = primaryPlan.getDataUsageTime();
             }
         }
-        // Temporarily return null, since no current users of SubscriptionPlan have this intent set.
-        // TODO (b/170330084): Remove after refactoring 5G SubscriptionPlan logic.
-        // mManageSubscriptionIntent = createManageSubscriptionIntent(mSubId);
-        mManageSubscriptionIntent = null;
-        Log.i(TAG, "Have " + mDataplanCount + " plans, dflt sub-id " + mSubId
-                + ", intent " + mManageSubscriptionIntent);
-    }
-
-    /**
-     * Create an {@link Intent} that can be launched towards the carrier app
-     * that is currently defining the billing relationship plan through
-     * {@link INetworkPolicyManager#setSubscriptionPlans(int, SubscriptionPlan [], String)}.
-     *
-     * @return ready to launch Intent targeted towards the carrier app, or
-     *         {@code null} if no carrier app is defined, or if the defined
-     *         carrier app provides no management activity.
-     */
-    @VisibleForTesting
-    Intent createManageSubscriptionIntent(int subId) {
-        final INetworkPolicyManager iNetPolicyManager = INetworkPolicyManager.Stub.asInterface(
-                ServiceManager.getService(Context.NETWORK_POLICY_SERVICE));
-        String owner = "";
-        try {
-            owner = iNetPolicyManager.getSubscriptionPlansOwner(subId);
-        } catch (Exception ex) {
-            Log.w(TAG, "Fail to get subscription plan owner for subId " + subId, ex);
-        }
-
-        if (TextUtils.isEmpty(owner)) {
-            return null;
-        }
-
-        final List<SubscriptionPlan> plans = getSubscriptionPlans(subId);
-        if (plans.isEmpty()) {
-            return null;
-        }
-
-        final Intent intent = new Intent(SubscriptionManager.ACTION_MANAGE_SUBSCRIPTION_PLANS);
-        intent.setPackage(owner);
-        intent.putExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX, subId);
-
-        if (mContext.getPackageManager().queryIntentActivities(intent,
-                PackageManager.MATCH_DEFAULT_ONLY).isEmpty()) {
-            return null;
-        }
-
-        return intent;
+        Log.i(TAG, "Have " + mDataplanCount + " plans, dflt sub-id " + mSubId);
     }
 
     private static SubscriptionPlan getPrimaryPlan(List<SubscriptionPlan> plans) {
diff --git a/src/com/android/settings/datausage/WifiDataUsageSummaryPreferenceController.java b/src/com/android/settings/datausage/WifiDataUsageSummaryPreferenceController.java
deleted file mode 100644
index 782ce01..0000000
--- a/src/com/android/settings/datausage/WifiDataUsageSummaryPreferenceController.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.datausage;
-
-import android.app.Activity;
-import android.net.NetworkTemplate;
-import android.telephony.SubscriptionManager;
-
-import androidx.preference.Preference;
-
-import com.android.settingslib.net.DataUsageController;
-
-import java.util.HashSet;
-import java.util.Set;
-
-/**
- * The controller displays a data usage chart for the specified Wi-Fi network.
- */
-public class WifiDataUsageSummaryPreferenceController extends DataUsageSummaryPreferenceController {
-    final Set<String> mAllNetworkKeys;
-
-    public WifiDataUsageSummaryPreferenceController(Activity activity, Set<String> allNetworkKeys) {
-        super(activity, SubscriptionManager.INVALID_SUBSCRIPTION_ID);
-        mAllNetworkKeys = new HashSet<>(allNetworkKeys);
-    }
-
-    @Override
-    public void updateState(Preference preference) {
-        if (preference == null) {
-            return;
-        }
-
-        final DataUsageSummaryPreference mPreference = (DataUsageSummaryPreference) preference;
-        final NetworkTemplate template = new NetworkTemplate.Builder(NetworkTemplate.MATCH_WIFI)
-                .setWifiNetworkKeys(mAllNetworkKeys).build();
-        if (mDataUsageController == null) {
-            updateConfiguration(mContext, mSubId, getSubscriptionInfo(mSubId));
-        }
-        final DataUsageController.DataUsageInfo info = mDataUsageController.getDataUsageInfo(
-                template);
-
-        mPreference.setWifiMode(/* isWifiMode */ true, /* usagePeriod */
-                info.period, /* isSingleWifi */ true);
-        mPreference.setChartEnabled(true);
-        // Treats Wi-Fi network as unlimited network, which has same usage level and limited level.
-        mPreference.setUsageNumbers(info.usageLevel, info.usageLevel, /* hasMobileData */ false);
-
-        // TODO(b/126142293): Passpoint Wi-Fi should have limit of data usage and time remaining
-        mPreference.setProgress(100);
-        mPreference.setLabels(DataUsageUtils.formatDataUsage(mContext, /* sizeBytes */ 0),
-                DataUsageUtils.formatDataUsage(mContext, info.usageLevel));
-    }
-}
diff --git a/src/com/android/settings/network/NetworkProviderSettings.java b/src/com/android/settings/network/NetworkProviderSettings.java
index 47dc0ef..ee398a4 100644
--- a/src/com/android/settings/network/NetworkProviderSettings.java
+++ b/src/com/android/settings/network/NetworkProviderSettings.java
@@ -40,7 +40,6 @@
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 import android.util.EventLog;
-import android.util.FeatureFlagUtils;
 import android.util.Log;
 import android.view.ContextMenu;
 import android.view.ContextMenu.ContextMenuInfo;
@@ -62,7 +61,6 @@
 import com.android.settings.AirplaneModeEnabler;
 import com.android.settings.R;
 import com.android.settings.RestrictedSettingsFragment;
-import com.android.settings.core.FeatureFlags;
 import com.android.settings.core.SubSettingLauncher;
 import com.android.settings.datausage.DataUsagePreference;
 import com.android.settings.datausage.DataUsageUtils;
@@ -1047,17 +1045,13 @@
     @VisibleForTesting
     void launchNetworkDetailsFragment(LongPressWifiEntryPreference pref) {
         final WifiEntry wifiEntry = pref.getWifiEntry();
-        final Context context = getContext();
-        final CharSequence title =
-                FeatureFlagUtils.isEnabled(context, FeatureFlags.WIFI_DETAILS_DATAUSAGE_HEADER)
-                        ? wifiEntry.getTitle()
-                        : context.getText(R.string.pref_title_network_details);
+        final Context context = requireContext();
 
         final Bundle bundle = new Bundle();
         bundle.putString(WifiNetworkDetailsFragment.KEY_CHOSEN_WIFIENTRY_KEY, wifiEntry.getKey());
 
         new SubSettingLauncher(context)
-                .setTitleText(title)
+                .setTitleText(context.getText(R.string.pref_title_network_details))
                 .setDestination(WifiNetworkDetailsFragment.class.getName())
                 .setArguments(bundle)
                 .setSourceMetricsCategory(getMetricsCategory())
diff --git a/src/com/android/settings/password/SetNewPasswordActivity.java b/src/com/android/settings/password/SetNewPasswordActivity.java
index bb3c6df..c02e23b 100644
--- a/src/com/android/settings/password/SetNewPasswordActivity.java
+++ b/src/com/android/settings/password/SetNewPasswordActivity.java
@@ -121,9 +121,7 @@
 
     @Override
     public void launchChooseLock(Bundle chooseLockFingerprintExtras) {
-        final boolean isInSetupWizard = WizardManagerHelper.isAnySetupWizard(getIntent());
-        Intent intent = isInSetupWizard ? new Intent(this, SetupChooseLockGeneric.class)
-                : new Intent(this, ChooseLockGeneric.class);
+        Intent intent = new Intent(this, SetupChooseLockGeneric.class);
         intent.setAction(mNewPasswordAction);
         intent.putExtras(chooseLockFingerprintExtras);
         if (mCallerAppName != null) {
diff --git a/src/com/android/settings/password/SetupChooseLockGeneric.java b/src/com/android/settings/password/SetupChooseLockGeneric.java
index 7c0769e..eade7cf 100644
--- a/src/com/android/settings/password/SetupChooseLockGeneric.java
+++ b/src/com/android/settings/password/SetupChooseLockGeneric.java
@@ -256,6 +256,12 @@
             return InternalSetupChooseLockGenericFragment.class;
         }
 
+        @Override
+        protected boolean isToolbarEnabled() {
+            // Hide the action bar from this page.
+            return false;
+        }
+
         public static class InternalSetupChooseLockGenericFragment
                 extends ChooseLockGenericFragment {
             @Override
diff --git a/src/com/android/settings/privatespace/CreatePrivateSpaceController.java b/src/com/android/settings/privatespace/CreatePrivateSpaceController.java
new file mode 100644
index 0000000..3214988
--- /dev/null
+++ b/src/com/android/settings/privatespace/CreatePrivateSpaceController.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.privatespace;
+
+import android.content.Context;
+import android.text.TextUtils;
+import android.widget.Toast;
+
+import androidx.preference.Preference;
+
+import com.android.settings.R;
+import com.android.settings.core.BasePreferenceController;
+
+// TODO(b/293569406): Remove this when we have the setup flow in place to create PS
+/**
+ * Temp Controller to create the private space from the PS Settings page. This is to allow PM, UX,
+ * and other folks to play around with PS before the PS setup flow is ready.
+ */
+public final class CreatePrivateSpaceController extends BasePreferenceController {
+
+    public CreatePrivateSpaceController(Context context, String preferenceKey) {
+        super(context, preferenceKey);
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return AVAILABLE;
+    }
+
+    @Override
+    public boolean handlePreferenceTreeClick(Preference preference) {
+        if (!TextUtils.equals(preference.getKey(), getPreferenceKey())) {
+            return false;
+        }
+
+        if (PrivateSpaceMaintainer.getInstance(mContext).doesPrivateSpaceExist()) {
+            showPrivateSpaceAlreadyExistsToast();
+            return super.handlePreferenceTreeClick(preference);
+        }
+
+        if (PrivateSpaceMaintainer.getInstance(mContext).createPrivateSpace()) {
+            showPrivateSpaceCreatedToast();
+        } else {
+            showPrivateSpaceCreationFailedToast();
+        }
+        return super.handlePreferenceTreeClick(preference);
+    }
+
+    private void showPrivateSpaceCreatedToast() {
+        Toast.makeText(mContext, R.string.private_space_created, Toast.LENGTH_SHORT).show();
+    }
+
+    private void showPrivateSpaceCreationFailedToast() {
+        Toast.makeText(mContext, R.string.private_space_create_failed, Toast.LENGTH_SHORT).show();
+    }
+
+    private void showPrivateSpaceAlreadyExistsToast() {
+        Toast.makeText(mContext, R.string.private_space_already_exists, Toast.LENGTH_SHORT).show();
+    }
+}
diff --git a/src/com/android/settings/privatespace/DeletePrivateSpaceController.java b/src/com/android/settings/privatespace/DeletePrivateSpaceController.java
new file mode 100644
index 0000000..c94f63a
--- /dev/null
+++ b/src/com/android/settings/privatespace/DeletePrivateSpaceController.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.privatespace;
+
+import static com.android.settings.privatespace.PrivateSpaceMaintainer.ErrorDeletingPrivateSpace.DELETE_PS_ERROR_INTERNAL;
+import static com.android.settings.privatespace.PrivateSpaceMaintainer.ErrorDeletingPrivateSpace.DELETE_PS_ERROR_NONE;
+import static com.android.settings.privatespace.PrivateSpaceMaintainer.ErrorDeletingPrivateSpace.DELETE_PS_ERROR_NO_PRIVATE_SPACE;
+
+import android.content.Context;
+import android.text.TextUtils;
+import android.util.Log;
+import android.widget.Toast;
+
+import androidx.preference.Preference;
+
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.settings.R;
+import com.android.settings.core.BasePreferenceController;
+
+/** Controller to delete the private space from the PS Settings page */
+public class DeletePrivateSpaceController extends BasePreferenceController {
+    private static final String TAG = "DeletePrivateSpaceController";
+    private final PrivateSpaceMaintainer mPrivateSpaceMaintainer;
+
+    static class Injector {
+        PrivateSpaceMaintainer injectPrivateSpaceMaintainer(Context context) {
+            return PrivateSpaceMaintainer.getInstance(context);
+        }
+    }
+
+    public DeletePrivateSpaceController(Context context, String preferenceKey) {
+        this(context, preferenceKey, new Injector());
+    }
+
+    DeletePrivateSpaceController(Context context, String preferenceKey, Injector injector) {
+        super(context, preferenceKey);
+        mPrivateSpaceMaintainer = injector.injectPrivateSpaceMaintainer(context);
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return AVAILABLE;
+    }
+
+    @Override
+    public boolean handlePreferenceTreeClick(Preference preference) {
+        if (!TextUtils.equals(preference.getKey(), getPreferenceKey())) {
+            return false;
+        }
+
+        PrivateSpaceMaintainer.ErrorDeletingPrivateSpace error =
+                mPrivateSpaceMaintainer.deletePrivateSpace();
+        if (error == DELETE_PS_ERROR_NONE) {
+            showSuccessfulDeletionToast();
+        } else if (error == DELETE_PS_ERROR_INTERNAL) {
+            showDeletionInternalErrorToast();
+        } else if (error == DELETE_PS_ERROR_NO_PRIVATE_SPACE) {
+            // Ideally this should never happen as PS Settings is not available when there's no
+            // Private Profile.
+            Log.e(TAG, "Unexpected attempt to delete non-existent PS");
+        }
+        return super.handlePreferenceTreeClick(preference);
+    }
+
+    /** Shows a toast saying that the private space was deleted */
+    @VisibleForTesting
+    public void showSuccessfulDeletionToast() {
+        Toast.makeText(mContext, R.string.private_space_deleted, Toast.LENGTH_SHORT).show();
+    }
+
+    /** Shows a toast saying that the private space could not be deleted */
+    @VisibleForTesting
+    public void showDeletionInternalErrorToast() {
+        Toast.makeText(mContext, R.string.private_space_delete_failed, Toast.LENGTH_SHORT).show();
+    }
+}
diff --git a/src/com/android/settings/privatespace/HidePrivateSpaceController.java b/src/com/android/settings/privatespace/HidePrivateSpaceController.java
new file mode 100644
index 0000000..f27acbd
--- /dev/null
+++ b/src/com/android/settings/privatespace/HidePrivateSpaceController.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.privatespace;
+
+import android.content.Context;
+
+import com.android.settings.core.TogglePreferenceController;
+
+/** Represents the preference controller for (un)hiding the Private Space */
+public final class HidePrivateSpaceController extends TogglePreferenceController {
+    public HidePrivateSpaceController(Context context, String preferenceKey) {
+        super(context, preferenceKey);
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return AVAILABLE;
+    }
+
+    @Override
+    public boolean isChecked() {
+        // TODO(b/293569406) Need to check this from a persistent store, maybe like SettingsProvider
+        return false;
+    }
+
+    @Override
+    public boolean setChecked(boolean isChecked) {
+        // TODO(b/293569406) Need to save this to a persistent store, maybe like SettingsProvider
+        return true;
+    }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return 0;
+    }
+}
diff --git a/src/com/android/settings/privatespace/PrivateSpaceDashboardFragment.java b/src/com/android/settings/privatespace/PrivateSpaceDashboardFragment.java
new file mode 100644
index 0000000..9e1d0d5
--- /dev/null
+++ b/src/com/android/settings/privatespace/PrivateSpaceDashboardFragment.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.privatespace;
+
+import android.app.settings.SettingsEnums;
+import android.content.Context;
+import android.util.FeatureFlagUtils;
+
+import com.android.settings.R;
+import com.android.settings.dashboard.DashboardFragment;
+import com.android.settings.safetycenter.SafetyCenterManagerWrapper;
+import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settingslib.search.SearchIndexable;
+
+import java.util.List;
+
+/** Fragment representing the Private Space dashboard in Settings. */
+@SearchIndexable
+public class PrivateSpaceDashboardFragment extends DashboardFragment {
+    private static final String TAG = "PrivateSpaceDashboardFragment";
+    private static final String KEY_CREATE_PROFILE_PREFERENCE = "private_space_create";
+    private static final String KEY_DELETE_PROFILE_PREFERENCE = "private_space_delete";
+    private static final String KEY_ONE_LOCK_PREFERENCE = "private_space_use_one_lock";
+    private static final String KEY_PS_HIDDEN_PREFERENCE = "private_space_hidden";
+
+    @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.private_space_settings;
+    }
+
+    @Override
+    public int getMetricsCategory() {
+        return SettingsEnums.PRIVATE_SPACE_SETTINGS;
+    }
+
+    @Override
+    protected String getLogTag() {
+        return TAG;
+    }
+
+    public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+            new BaseSearchIndexProvider(R.xml.private_space_settings) {
+                @Override
+                protected boolean isPageSearchEnabled(Context context) {
+                    // Temporary workaround for hiding PS Settings until the trunk stable feature
+                    // flag is available.
+                    // TODO(b/295516544): Remove this workaround when trunk stable feature flag is
+                    // available.
+                    return SafetyCenterManagerWrapper.get().isEnabled(context)
+                            && FeatureFlagUtils.isEnabled(context,
+                            FeatureFlagUtils.SETTINGS_PRIVATE_SPACE_SETTINGS);
+                }
+
+                @Override
+                public List<String> getNonIndexableKeys(Context context) {
+                    List<String> keys = super.getNonIndexableKeys(context);
+                    keys.add(KEY_CREATE_PROFILE_PREFERENCE);
+                    keys.add(KEY_DELETE_PROFILE_PREFERENCE);
+                    keys.add(KEY_ONE_LOCK_PREFERENCE);
+                    keys.add(KEY_PS_HIDDEN_PREFERENCE);
+                    return keys;
+                }
+            };
+}
diff --git a/src/com/android/settings/privatespace/PrivateSpaceMaintainer.java b/src/com/android/settings/privatespace/PrivateSpaceMaintainer.java
new file mode 100644
index 0000000..709814d
--- /dev/null
+++ b/src/com/android/settings/privatespace/PrivateSpaceMaintainer.java
@@ -0,0 +1,145 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.privatespace;
+
+import static android.os.UserManager.USER_TYPE_PROFILE_PRIVATE;
+
+import android.app.ActivityManager;
+import android.app.IActivityManager;
+import android.content.Context;
+import android.content.pm.UserInfo;
+import android.os.RemoteException;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.util.ArraySet;
+import android.util.Log;
+
+import com.android.internal.annotations.GuardedBy;
+
+import java.util.List;
+
+// TODO(b/293569406): Update the javadoc when we have the setup flow in place to create PS
+/** A class to help with the creation / deletion of Private Space */
+public class PrivateSpaceMaintainer {
+    private static final String TAG = "PrivateSpaceMaintainer";
+    @GuardedBy("this")
+    private static PrivateSpaceMaintainer sPrivateSpaceMaintainer;
+
+    private final Context mContext;
+    private final UserManager mUserManager;
+    @GuardedBy("this")
+    private UserHandle mUserHandle;
+
+    public enum ErrorDeletingPrivateSpace {
+            DELETE_PS_ERROR_NONE,
+            DELETE_PS_ERROR_NO_PRIVATE_SPACE,
+            DELETE_PS_ERROR_INTERNAL
+    }
+
+    /**
+     * Returns true if the private space was successfully created.
+     *
+     * <p> This method should be used by the Private Space Setup Flow ONLY.
+     */
+    final synchronized boolean createPrivateSpace() {
+        // Check if Private space already exists
+        if (doesPrivateSpaceExist()) {
+            return true;
+        }
+        // a name indicating that the profile was created from the PS Settings page
+        final String userName = "psSettingsUser";
+
+        if (mUserHandle == null) {
+            try {
+                mUserHandle = mUserManager.createProfile(
+                                userName, USER_TYPE_PROFILE_PRIVATE, new ArraySet<>());
+            } catch (Exception e) {
+                Log.e(TAG, "Error creating private space", e);
+                return false;
+            }
+
+            if (mUserHandle == null) {
+                Log.e(TAG, "Failed to create private space");
+                return false;
+            }
+
+            IActivityManager am = ActivityManager.getService();
+            try {
+                am.startProfile(mUserHandle.getIdentifier());
+            } catch (RemoteException e) {
+                Log.e(TAG, "Failed to start private profile");
+                return false;
+            }
+
+            Log.i(TAG, "Private space created with id: " + mUserHandle.getIdentifier());
+        }
+        return true;
+    }
+
+    /** Returns the {@link ErrorDeletingPrivateSpace} enum representing the result of operation.
+     *
+     * <p> This method should be used ONLY by the delete-PS controller in the PS Settings page.
+     */
+    public synchronized ErrorDeletingPrivateSpace deletePrivateSpace() {
+        if (!doesPrivateSpaceExist()) {
+            return ErrorDeletingPrivateSpace.DELETE_PS_ERROR_NO_PRIVATE_SPACE;
+        }
+
+        try {
+            Log.i(TAG, "Deleting Private space with id: " + mUserHandle.getIdentifier());
+            if (mUserManager.removeUser(mUserHandle)) {
+                Log.i(TAG, "Private space deleted");
+                mUserHandle = null;
+
+                return ErrorDeletingPrivateSpace.DELETE_PS_ERROR_NONE;
+            } else {
+                Log.e(TAG, "Failed to delete private space");
+            }
+        } catch (Exception e) {
+            Log.e(TAG, "Error deleting private space", e);
+        }
+        return ErrorDeletingPrivateSpace.DELETE_PS_ERROR_INTERNAL;
+    }
+
+    /** Returns true if the Private space exists. */
+    public synchronized boolean doesPrivateSpaceExist() {
+        if (mUserHandle != null) {
+            return true;
+        }
+
+        List<UserInfo> users = mUserManager.getProfiles(0);
+        for (UserInfo user : users) {
+            if (user.isPrivateProfile()) {
+                mUserHandle = user.getUserHandle();
+                return true;
+            }
+        }
+        return false;
+    }
+
+    static synchronized PrivateSpaceMaintainer getInstance(Context context) {
+        if (sPrivateSpaceMaintainer == null) {
+            sPrivateSpaceMaintainer = new PrivateSpaceMaintainer(context);
+        }
+        return sPrivateSpaceMaintainer;
+    }
+
+    private PrivateSpaceMaintainer(Context context) {
+        mContext = context.getApplicationContext();
+        mUserManager = mContext.getSystemService(UserManager.class);
+    }
+}
diff --git a/src/com/android/settings/privatespace/PrivateSpaceSafetySource.java b/src/com/android/settings/privatespace/PrivateSpaceSafetySource.java
new file mode 100644
index 0000000..b07c623
--- /dev/null
+++ b/src/com/android/settings/privatespace/PrivateSpaceSafetySource.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.privatespace;
+
+import android.app.PendingIntent;
+import android.app.settings.SettingsEnums;
+import android.content.Context;
+import android.content.Intent;
+import android.os.UserManager;
+import android.safetycenter.SafetyEvent;
+import android.safetycenter.SafetySourceData;
+import android.safetycenter.SafetySourceStatus;
+import android.util.FeatureFlagUtils;
+import android.util.Log;
+
+import com.android.settings.R;
+import com.android.settings.core.SubSettingLauncher;
+import com.android.settings.safetycenter.SafetyCenterManagerWrapper;
+import com.android.settingslib.transition.SettingsTransitionHelper;
+
+/** Private Space safety source for the Safety Center */
+public final class PrivateSpaceSafetySource {
+    public static final String SAFETY_SOURCE_ID = "AndroidPrivateSpace";
+    private static final String TAG = "PrivateSpaceSafetySource";
+
+    private PrivateSpaceSafetySource() {}
+
+    /** Sets lock screen safety data for Safety Center. */
+    public static void setSafetySourceData(Context context,
+            SafetyEvent safetyEvent) {
+        if (!SafetyCenterManagerWrapper.get().isEnabled(context)) {
+            Log.i(TAG, "Safety Center disabled");
+            return;
+        }
+
+        // Check the profile type - we don't want to show this for anything other than primary user.
+        UserManager userManager = context.getSystemService(UserManager.class);
+        if (userManager != null && !userManager.isMainUser()) {
+            Log.i(TAG, "setSafetySourceData not main user");
+            return;
+        }
+
+        // Temporary workaround to help prevent the PS Settings showing up in droidfood builds.
+        // TODO(b/295516544): remove this when the trunk stable feature flag for PS is available.
+        if (!FeatureFlagUtils.isEnabled(context,
+                FeatureFlagUtils.SETTINGS_PRIVATE_SPACE_SETTINGS)) {
+            // Setting null safetySourceData so that an old entry gets cleared out and this way
+            // provide a response since SC always expects one on rescan.
+            SafetyCenterManagerWrapper.get().setSafetySourceData(
+                    context,
+                    SAFETY_SOURCE_ID,
+                    /* safetySourceData */ null,
+                    safetyEvent
+            );
+            return;
+        }
+
+        PendingIntent pendingIntent = getPendingIntentForPsDashboard(context);
+
+        SafetySourceStatus status = new SafetySourceStatus.Builder(
+                context.getString(R.string.private_space_title),
+                context.getString(R.string.private_space_summary),
+                SafetySourceData.SEVERITY_LEVEL_UNSPECIFIED)
+                .setPendingIntent(pendingIntent).build();
+        SafetySourceData safetySourceData =
+                new SafetySourceData.Builder().setStatus(status).build();
+
+        Log.d(TAG, "Setting safety source data");
+        SafetyCenterManagerWrapper.get().setSafetySourceData(
+                context,
+                SAFETY_SOURCE_ID,
+                safetySourceData,
+                safetyEvent
+        );
+    }
+
+    private static PendingIntent getPendingIntentForPsDashboard(Context context) {
+        Intent privateSpaceDashboardIntent = new SubSettingLauncher(context)
+                .setDestination(PrivateSpaceDashboardFragment.class.getName())
+                .setTransitionType(SettingsTransitionHelper.TransitionType.TRANSITION_SLIDE)
+                .setSourceMetricsCategory(SettingsEnums.PRIVATE_SPACE_SETTINGS)
+                .toIntent()
+                .setIdentifier(SAFETY_SOURCE_ID);
+
+        return PendingIntent
+                .getActivity(
+                        context,
+                        /* requestCode */ 0,
+                        privateSpaceDashboardIntent,
+                        PendingIntent.FLAG_IMMUTABLE);
+    }
+}
diff --git a/src/com/android/settings/privatespace/UseOneLockController.java b/src/com/android/settings/privatespace/UseOneLockController.java
new file mode 100644
index 0000000..a94db57
--- /dev/null
+++ b/src/com/android/settings/privatespace/UseOneLockController.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.privatespace;
+
+import android.content.Context;
+
+import com.android.settings.core.TogglePreferenceController;
+
+/** Represents the preference controller for using the same lock as the screen lock */
+public class UseOneLockController extends TogglePreferenceController {
+    public UseOneLockController(Context context, String preferenceKey) {
+        super(context, preferenceKey);
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return AVAILABLE;
+    }
+
+    @Override
+    public boolean isChecked() {
+        // TODO(b/293569406) Need to save this to a persistent store, maybe like SettingsProvider
+        return false;
+    }
+
+    @Override
+    public boolean setChecked(boolean isChecked) {
+        // TODO(b/293569406) Need to save this to a persistent store, maybe like SettingsProvider
+        return true;
+    }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return 0;
+    }
+}
diff --git a/src/com/android/settings/safetycenter/SafetySourceBroadcastReceiver.java b/src/com/android/settings/safetycenter/SafetySourceBroadcastReceiver.java
index 0b556e7..cc0f892 100644
--- a/src/com/android/settings/safetycenter/SafetySourceBroadcastReceiver.java
+++ b/src/com/android/settings/safetycenter/SafetySourceBroadcastReceiver.java
@@ -28,6 +28,7 @@
 import android.safetycenter.SafetyCenterManager;
 import android.safetycenter.SafetyEvent;
 
+import com.android.settings.privatespace.PrivateSpaceSafetySource;
 import com.android.settings.security.ScreenLockPreferenceDetailsUtils;
 
 import com.google.common.collect.ImmutableList;
@@ -79,11 +80,16 @@
         if (sourceIds.contains(BiometricsSafetySource.SAFETY_SOURCE_ID)) {
             BiometricsSafetySource.setSafetySourceData(context, safetyEvent);
         }
+
+        if (sourceIds.contains(PrivateSpaceSafetySource.SAFETY_SOURCE_ID)) {
+            PrivateSpaceSafetySource.setSafetySourceData(context, safetyEvent);
+        }
     }
 
     private static void refreshAllSafetySources(Context context, SafetyEvent safetyEvent) {
         LockScreenSafetySource.setSafetySourceData(context,
                 new ScreenLockPreferenceDetailsUtils(context), safetyEvent);
         BiometricsSafetySource.setSafetySourceData(context, safetyEvent);
+        PrivateSpaceSafetySource.setSafetySourceData(context, safetyEvent);
     }
 }
diff --git a/src/com/android/settings/users/MultiUserSwitchBarController.java b/src/com/android/settings/users/MultiUserSwitchBarController.java
index 3697bb0..33651c3 100644
--- a/src/com/android/settings/users/MultiUserSwitchBarController.java
+++ b/src/com/android/settings/users/MultiUserSwitchBarController.java
@@ -46,18 +46,13 @@
 
 
     MultiUserSwitchBarController(Context context, SwitchWidgetController switchBar,
-            boolean canUserSwitchToggle, OnMultiUserSwitchChangedListener listener) {
+            OnMultiUserSwitchChangedListener listener) {
         mContext = context;
         mSwitchBar = switchBar;
         mListener = listener;
         mUserCapabilities = UserCapabilities.create(context);
         mSwitchBar.setChecked(mUserCapabilities.mUserSwitcherEnabled);
 
-        setToggleEnabled(canUserSwitchToggle);
-        mSwitchBar.setListener(this);
-    }
-
-    void setToggleEnabled(boolean canUserSwitchToggle) {
         if (mUserCapabilities.mDisallowSwitchUser) {
             mSwitchBar.setDisabledByAdmin(RestrictedLockUtilsInternal
                     .checkIfRestrictionEnforced(mContext, UserManager.DISALLOW_USER_SWITCH,
@@ -69,8 +64,9 @@
                             UserHandle.myUserId()));
         } else {
             mSwitchBar.setEnabled(!mUserCapabilities.mDisallowSwitchUser
-                    && !mUserCapabilities.mIsGuest && canUserSwitchToggle);
+                    && !mUserCapabilities.mIsGuest && mUserCapabilities.isAdmin());
         }
+        mSwitchBar.setListener(this);
     }
 
     @Override
diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java
index c63517d..64699ff 100644
--- a/src/com/android/settings/users/UserSettings.java
+++ b/src/com/android/settings/users/UserSettings.java
@@ -290,9 +290,8 @@
         } else {
             switchBar.hide();
         }
-        boolean isToggleEnabled = mUserManager.getFullUserCount() == 1;
         mSwitchBarController = new MultiUserSwitchBarController(activity,
-                new MainSwitchBarController(switchBar), isToggleEnabled, this /* listener */);
+                new MainSwitchBarController(switchBar), this /* listener */);
         getSettingsLifecycle().addObserver(mSwitchBarController);
         boolean openUserEditDialog = getIntent().getBooleanExtra(
                 EXTRA_OPEN_DIALOG_USER_PROFILE_EDITOR, false);
@@ -423,9 +422,6 @@
                 mRemoveGuestOnExitPreferenceController.getPreferenceKey()));
         if (mShouldUpdateUserList) {
             updateUI();
-            // Update state of "Allow multiple users" toggle when list of users updates
-            boolean isToggleEnabled = mUserManager.getFullUserCount() == 1;
-            mSwitchBarController.setToggleEnabled(isToggleEnabled);
         }
     }
 
diff --git a/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2.java b/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2.java
index ac0e149..cacd448 100644
--- a/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2.java
+++ b/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2.java
@@ -20,7 +20,6 @@
 import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED;
 import static android.net.NetworkCapabilities.TRANSPORT_WIFI;
 import static android.telephony.TelephonyManager.UNKNOWN_CARRIER_ID;
-
 import static com.android.settingslib.wifi.WifiUtils.getHotspotIconResource;
 
 import android.app.Activity;
@@ -41,7 +40,6 @@
 import android.net.LinkProperties;
 import android.net.Network;
 import android.net.NetworkCapabilities;
-import android.net.NetworkInfo;
 import android.net.NetworkRequest;
 import android.net.RouteInfo;
 import android.net.Uri;
@@ -53,7 +51,6 @@
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
 import android.text.TextUtils;
-import android.util.FeatureFlagUtils;
 import android.util.Log;
 import android.widget.ImageView;
 import android.widget.Toast;
@@ -69,9 +66,7 @@
 import com.android.net.module.util.Inet4AddressUtils;
 import com.android.settings.R;
 import com.android.settings.Utils;
-import com.android.settings.core.FeatureFlags;
 import com.android.settings.core.PreferenceControllerMixin;
-import com.android.settings.datausage.WifiDataUsageSummaryPreferenceController;
 import com.android.settings.network.SubscriptionUtil;
 import com.android.settings.widget.EntityHeaderController;
 import com.android.settings.wifi.WifiDialog2;
@@ -164,12 +159,10 @@
     private final Handler mHandler;
     private LinkProperties mLinkProperties;
     private Network mNetwork;
-    private NetworkInfo mNetworkInfo;
     private NetworkCapabilities mNetworkCapabilities;
     private int mRssiSignalLevel = -1;
     @VisibleForTesting boolean mShowX; // Shows the Wi-Fi signal icon of Pie+x when it's true.
     private String[] mSignalStr;
-    private WifiInfo mWifiInfo;
     private final WifiManager mWifiManager;
     private final MetricsFeatureProvider mMetricsFeatureProvider;
 
@@ -192,10 +185,6 @@
     private Preference mTypePref;
     private PreferenceCategory mIpv6Category;
     private Preference mIpv6AddressPref;
-    private Lifecycle mLifecycle;
-    Preference mDataUsageSummaryPref;
-    WifiDataUsageSummaryPreferenceController mSummaryHeaderController;
-
     private final IconInjector mIconInjector;
     private final Clock mClock;
 
@@ -337,7 +326,6 @@
         mIconInjector = injector;
         mClock = clock;
 
-        mLifecycle = lifecycle;
         lifecycle.addObserver(this);
     }
 
@@ -432,16 +420,6 @@
     private void setupEntityHeader(PreferenceScreen screen) {
         LayoutPreference headerPref = screen.findPreference(KEY_HEADER);
 
-        if (usingDataUsageHeader(mContext)) {
-            headerPref.setVisible(false);
-            mDataUsageSummaryPref = screen.findPreference(KEY_DATA_USAGE_HEADER);
-            mDataUsageSummaryPref.setVisible(true);
-            mSummaryHeaderController =
-                    new WifiDataUsageSummaryPreferenceController(mFragment.getActivity(),
-                            mWifiEntry.getWifiConfiguration().getAllNetworkKeys());
-            return;
-        }
-
         mEntityHeaderController =
                 EntityHeaderController.newInstance(
                         mFragment.getActivity(), mFragment,
@@ -486,14 +464,10 @@
     }
 
     private void refreshEntityHeader() {
-        if (usingDataUsageHeader(mContext)) {
-            mSummaryHeaderController.updateState(mDataUsageSummaryPref);
-        } else {
-            mEntityHeaderController
-                    .setSummary(mWifiEntry.getSummary())
-                    .setSecondSummary(getExpiryTimeSummary())
-                    .done(true /* rebind */);
-        }
+        mEntityHeaderController
+                .setSummary(mWifiEntry.getSummary())
+                .setSecondSummary(getExpiryTimeSummary())
+                .done(true /* rebind */);
     }
 
     @VisibleForTesting
@@ -502,14 +476,10 @@
             mNetwork = mWifiManager.getCurrentNetwork();
             mLinkProperties = mConnectivityManager.getLinkProperties(mNetwork);
             mNetworkCapabilities = mConnectivityManager.getNetworkCapabilities(mNetwork);
-            mNetworkInfo = mConnectivityManager.getNetworkInfo(mNetwork);
-            mWifiInfo = mWifiManager.getConnectionInfo();
         } else {
             mNetwork = null;
             mLinkProperties = null;
             mNetworkCapabilities = null;
-            mNetworkInfo = null;
-            mWifiInfo = null;
         }
     }
 
@@ -1059,10 +1029,6 @@
         }
     }
 
-    private boolean usingDataUsageHeader(Context context) {
-        return FeatureFlagUtils.isEnabled(context, FeatureFlags.WIFI_DETAILS_DATAUSAGE_HEADER);
-    }
-
     @VisibleForTesting
     void connectDisconnectNetwork() {
         if (mWifiEntry.getConnectedState() == WifiEntry.CONNECTED_STATE_DISCONNECTED) {
diff --git a/tests/robotests/src/com/android/settings/AllInOneTetherSettingsTest.java b/tests/robotests/src/com/android/settings/AllInOneTetherSettingsTest.java
index f4a20fe..f2a55c1 100644
--- a/tests/robotests/src/com/android/settings/AllInOneTetherSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/AllInOneTetherSettingsTest.java
@@ -52,7 +52,6 @@
 import com.android.settingslib.core.lifecycle.Lifecycle;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -186,7 +185,6 @@
                 .getPreferenceControllers(mContext)).isNotEmpty();
     }
 
-    @Ignore
     @Test
     public void createPreferenceControllers_hasAutoOffPreference() {
         assertThat(mAllInOneTetherSettings.createPreferenceControllers(mContext)
diff --git a/tests/robotests/src/com/android/settings/MainClearConfirmTest.java b/tests/robotests/src/com/android/settings/MainClearConfirmTest.java
index 43fe9ca..b866c96 100644
--- a/tests/robotests/src/com/android/settings/MainClearConfirmTest.java
+++ b/tests/robotests/src/com/android/settings/MainClearConfirmTest.java
@@ -31,8 +31,6 @@
 
 import androidx.fragment.app.FragmentActivity;
 
-import com.android.settings.utils.ActivityControllerWrapper;
-
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -66,8 +64,7 @@
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
-        mActivity = spy((FragmentActivity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(FragmentActivity.class)).get());
+        mActivity = Robolectric.setupActivity(FragmentActivity.class);
         mMainClearConfirm = spy(new MainClearConfirm());
     }
 
diff --git a/tests/robotests/src/com/android/settings/MainClearTest.java b/tests/robotests/src/com/android/settings/MainClearTest.java
index d782e6d..dc17dda 100644
--- a/tests/robotests/src/com/android/settings/MainClearTest.java
+++ b/tests/robotests/src/com/android/settings/MainClearTest.java
@@ -52,12 +52,10 @@
 
 import com.android.settings.testutils.shadow.ShadowUserManager;
 import com.android.settings.testutils.shadow.ShadowUtils;
-import com.android.settings.utils.ActivityControllerWrapper;
 import com.android.settingslib.development.DevelopmentSettingsEnabler;
 
 import org.junit.After;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.ArgumentCaptor;
@@ -113,8 +111,7 @@
             @Override
             boolean showAnySubscriptionInfo(Context context) { return true; }
         });
-        mActivity = spy((FragmentActivity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(FragmentActivity.class)).get());
+        mActivity = Robolectric.setupActivity(FragmentActivity.class);
         mShadowActivity = Shadows.shadowOf(mActivity);
         UserManager userManager = mActivity.getSystemService(UserManager.class);
         mShadowUserManager = Shadow.extract(userManager);
@@ -151,7 +148,6 @@
                 .isTrue();
     }
 
-    @Ignore
     @Test
     public void testShowFinalConfirmation_eraseEsimVisible_eraseEsimUnchecked() {
         final Context context = mock(Context.class);
@@ -237,7 +233,6 @@
         assertThat(mMainClear.showWipeEuicc()).isTrue();
     }
 
-    @Ignore
     @Test
     public void testShowWipeEuicc_developerMode_unprovisioned() {
         prepareEuiccState(
diff --git a/tests/robotests/src/com/android/settings/ResetNetworkConfirmTest.java b/tests/robotests/src/com/android/settings/ResetNetworkConfirmTest.java
index 34012d3..9ade776 100644
--- a/tests/robotests/src/com/android/settings/ResetNetworkConfirmTest.java
+++ b/tests/robotests/src/com/android/settings/ResetNetworkConfirmTest.java
@@ -18,8 +18,14 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 
+import android.content.Context;
+import android.os.Looper;
 import android.view.LayoutInflater;
 import android.widget.TextView;
 
@@ -27,10 +33,10 @@
 
 import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
 import com.android.settings.testutils.shadow.ShadowRecoverySystem;
-import com.android.settings.utils.ActivityControllerWrapper;
 
 import org.junit.After;
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -57,8 +63,7 @@
         MockitoAnnotations.initMocks(this);
 
         mResetNetworkConfirm = new ResetNetworkConfirm();
-        mActivity = spy((FragmentActivity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(FragmentActivity.class)).get());
+        mActivity = spy(Robolectric.setupActivity(FragmentActivity.class));
         mResetNetworkConfirm.mActivity = mActivity;
     }
 
diff --git a/tests/robotests/src/com/android/settings/ResetNetworkTest.java b/tests/robotests/src/com/android/settings/ResetNetworkTest.java
index 0689e4a..0c2c7e8 100644
--- a/tests/robotests/src/com/android/settings/ResetNetworkTest.java
+++ b/tests/robotests/src/com/android/settings/ResetNetworkTest.java
@@ -27,8 +27,6 @@
 import android.view.View;
 import android.widget.CheckBox;
 
-import com.android.settings.utils.ActivityControllerWrapper;
-
 import org.junit.Before;
 import org.junit.Ignore;
 import org.junit.Test;
@@ -43,8 +41,7 @@
 
     @Before
     public void setUp() {
-        mActivity = (Activity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(Activity.class)).get();
+        mActivity = Robolectric.setupActivity(Activity.class);
         mResetNetwork = spy(new ResetNetwork());
         when(mResetNetwork.getContext()).thenReturn(mActivity);
         mResetNetwork.mEsimContainer = new View(mActivity);
diff --git a/tests/robotests/src/com/android/settings/RestrictedListPreferenceTest.java b/tests/robotests/src/com/android/settings/RestrictedListPreferenceTest.java
index 232933c..9660b9d 100644
--- a/tests/robotests/src/com/android/settings/RestrictedListPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/RestrictedListPreferenceTest.java
@@ -30,7 +30,6 @@
 import android.util.AttributeSet;
 
 import com.android.settings.testutils.shadow.ShadowUserManager;
-import com.android.settings.utils.ActivityControllerWrapper;
 import com.android.settingslib.RestrictedPreferenceHelper;
 
 import org.junit.Before;
@@ -59,8 +58,7 @@
 
     @Before
     public void setUp() {
-        mActivity = (Activity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(Activity.class)).get();
+        mActivity = Robolectric.setupActivity(Activity.class);
         mShadowKeyguardManager =
                 Shadows.shadowOf(application.getSystemService(KeyguardManager.class));
         mMockHelper = mock(RestrictedPreferenceHelper.class);
diff --git a/tests/robotests/src/com/android/settings/SettingsDumpServiceTest.java b/tests/robotests/src/com/android/settings/SettingsDumpServiceTest.java
index 2e5c144..9d8841f 100644
--- a/tests/robotests/src/com/android/settings/SettingsDumpServiceTest.java
+++ b/tests/robotests/src/com/android/settings/SettingsDumpServiceTest.java
@@ -34,7 +34,6 @@
 import org.json.JSONException;
 import org.json.JSONObject;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -100,7 +99,6 @@
                 ANOMALY_VERSION);
     }
 
-    @Ignore
     @Test
     public void testDump_printServiceAsKey() {
         mResolveInfo.activityInfo = new ActivityInfo();
diff --git a/tests/robotests/src/com/android/settings/accessibility/HearingAidDialogFragmentTest.java b/tests/robotests/src/com/android/settings/accessibility/HearingAidDialogFragmentTest.java
index 7a0853f..adfd573 100644
--- a/tests/robotests/src/com/android/settings/accessibility/HearingAidDialogFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/HearingAidDialogFragmentTest.java
@@ -34,7 +34,6 @@
 import com.android.settings.SettingsActivity;
 import com.android.settings.bluetooth.BluetoothPairingDetail;
 import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
-import com.android.settings.utils.ActivityControllerWrapper;
 
 import org.junit.Before;
 import org.junit.Rule;
@@ -65,8 +64,7 @@
     @Before
     public void setUpTestFragment() {
         mFragment = spy(HearingAidDialogFragment.newInstance());
-        mActivity = (FragmentActivity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(FragmentActivity.class)).get();
+        mActivity = Robolectric.setupActivity(FragmentActivity.class);
         when(mFragment.getActivity()).thenReturn(mActivity);
     }
 
diff --git a/tests/robotests/src/com/android/settings/accessibility/HearingAidPairingDialogFragmentTest.java b/tests/robotests/src/com/android/settings/accessibility/HearingAidPairingDialogFragmentTest.java
index e632f97..6c1de59 100644
--- a/tests/robotests/src/com/android/settings/accessibility/HearingAidPairingDialogFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/HearingAidPairingDialogFragmentTest.java
@@ -45,7 +45,6 @@
 import com.android.settings.bluetooth.Utils;
 import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
 import com.android.settings.testutils.shadow.ShadowBluetoothUtils;
-import com.android.settings.utils.ActivityControllerWrapper;
 import com.android.settingslib.bluetooth.CachedBluetoothDevice;
 import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
 import com.android.settingslib.bluetooth.HearingAidInfo;
@@ -171,8 +170,7 @@
     private void setupDialog(int launchPage) {
         mFragment = spy(
                 HearingAidPairingDialogFragment.newInstance(TEST_DEVICE_ADDRESS, launchPage));
-        mActivity = (FragmentActivity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(FragmentActivity.class)).get();
+        mActivity = Robolectric.setupActivity(FragmentActivity.class);
         mFragmentManager = mActivity.getSupportFragmentManager();
         when(mFragment.getActivity()).thenReturn(mActivity);
         doReturn(mFragmentManager).when(mFragment).getParentFragmentManager();
diff --git a/tests/robotests/src/com/android/settings/accessibility/HearingAidUtilsTest.java b/tests/robotests/src/com/android/settings/accessibility/HearingAidUtilsTest.java
index 9863087..6d45af2 100644
--- a/tests/robotests/src/com/android/settings/accessibility/HearingAidUtilsTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/HearingAidUtilsTest.java
@@ -35,7 +35,6 @@
 import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
 import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
 import com.android.settings.testutils.shadow.ShadowBluetoothUtils;
-import com.android.settings.utils.ActivityControllerWrapper;
 import com.android.settingslib.bluetooth.CachedBluetoothDevice;
 import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
 import com.android.settingslib.bluetooth.CsipSetCoordinatorProfile;
@@ -92,8 +91,7 @@
     @Before
     public void setUp() {
         setupEnvironment();
-        final FragmentActivity mActivity = (FragmentActivity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(FragmentActivity.class)).get();
+        final FragmentActivity mActivity = Robolectric.setupActivity(FragmentActivity.class);
         shadowMainLooper().idle();
         mFragmentManager = mActivity.getSupportFragmentManager();
         ShadowAlertDialogCompat.reset();
diff --git a/tests/robotests/src/com/android/settings/accessibility/ScreenFlashNotificationPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/ScreenFlashNotificationPreferenceControllerTest.java
index 8160fab..95a9438 100644
--- a/tests/robotests/src/com/android/settings/accessibility/ScreenFlashNotificationPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/ScreenFlashNotificationPreferenceControllerTest.java
@@ -40,7 +40,6 @@
 import androidx.preference.PreferenceScreen;
 
 import com.android.settings.R;
-import com.android.settings.utils.ActivityControllerWrapper;
 
 import org.junit.After;
 import org.junit.Before;
@@ -91,10 +90,7 @@
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
-        FragmentActivity fragmentActivity = (FragmentActivity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(FragmentActivity.class)).get();
-
-
+        FragmentActivity fragmentActivity = Robolectric.setupActivity(FragmentActivity.class);
         Context context = fragmentActivity.getApplicationContext();
         ShadowScreenFlashNotificationColorDialogFragment.setInstance(mDialogFragment);
         ShadowFlashNotificationsUtils.setColorDescriptionText(COLOR_DESCRIPTION_TEXT);
diff --git a/tests/robotests/src/com/android/settings/accessibility/TextReadingPreferenceFragmentTest.java b/tests/robotests/src/com/android/settings/accessibility/TextReadingPreferenceFragmentTest.java
index 1d5370f..8212ba2 100644
--- a/tests/robotests/src/com/android/settings/accessibility/TextReadingPreferenceFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/TextReadingPreferenceFragmentTest.java
@@ -40,7 +40,6 @@
 import com.android.settings.accessibility.AccessibilityDialogUtils.DialogEnums;
 import com.android.settings.accessibility.TextReadingResetController.ResetStateListener;
 import com.android.settings.testutils.XmlTestUtils;
-import com.android.settings.utils.ActivityControllerWrapper;
 
 import org.junit.Before;
 import org.junit.Rule;
@@ -83,9 +82,7 @@
         when(mFragment.getPreferenceManager()).thenReturn(mPreferenceManager);
         when(mFragment.getPreferenceManager().getContext()).thenReturn(mContext);
         when(mFragment.getContext()).thenReturn(mContext);
-        when(mFragment.getActivity()).thenReturn((FragmentActivity)
-                ActivityControllerWrapper.setup(Robolectric.buildActivity(
-                        FragmentActivity.class)).get());
+        when(mFragment.getActivity()).thenReturn(Robolectric.setupActivity(FragmentActivity.class));
 
         // Avoid a NPE is happened in ShadowWindowManagerGlobal
         doReturn(mock(DisplaySizeData.class)).when(mFragment).createDisplaySizeData(mContext);
diff --git a/tests/robotests/src/com/android/settings/accessibility/ViewAllBluetoothDevicesPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/ViewAllBluetoothDevicesPreferenceControllerTest.java
index 2c59354..6c9fbfc 100644
--- a/tests/robotests/src/com/android/settings/accessibility/ViewAllBluetoothDevicesPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/ViewAllBluetoothDevicesPreferenceControllerTest.java
@@ -30,8 +30,6 @@
 import androidx.preference.PreferenceScreen;
 import androidx.test.core.app.ApplicationProvider;
 
-import com.android.settings.utils.ActivityControllerWrapper;
-
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -66,8 +64,7 @@
 
     @Before
     public void setUp() {
-        mActivity = (FragmentActivity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(FragmentActivity.class)).get();
+        mActivity = Robolectric.setupActivity(FragmentActivity.class);
         when(mFragment.getContext()).thenReturn(mContext);
         when(mFragment.getActivity()).thenReturn(mActivity);
 
diff --git a/tests/robotests/src/com/android/settings/accounts/AccountSyncPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accounts/AccountSyncPreferenceControllerTest.java
index e760e62..1084102 100644
--- a/tests/robotests/src/com/android/settings/accounts/AccountSyncPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accounts/AccountSyncPreferenceControllerTest.java
@@ -36,7 +36,6 @@
 import com.android.settings.SettingsActivity;
 import com.android.settings.testutils.shadow.ShadowAccountManager;
 import com.android.settings.testutils.shadow.ShadowContentResolver;
-import com.android.settings.utils.ActivityControllerWrapper;
 
 import org.junit.After;
 import org.junit.Before;
@@ -63,8 +62,7 @@
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
-        mActivity = (Activity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(Activity.class)).get();
+        mActivity = Robolectric.setupActivity(Activity.class);
         ShadowApplication.getInstance().setSystemService(Context.ACCOUNT_SERVICE, mAccountManager);
 
         when(mAccountManager.getAuthenticatorTypesAsUser(anyInt())).thenReturn(
diff --git a/tests/robotests/src/com/android/settings/accounts/ChooseAccountPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accounts/ChooseAccountPreferenceControllerTest.java
index 5c4af0d..783eebe 100644
--- a/tests/robotests/src/com/android/settings/accounts/ChooseAccountPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accounts/ChooseAccountPreferenceControllerTest.java
@@ -41,7 +41,6 @@
 import com.android.settings.testutils.shadow.ShadowAccountManager;
 import com.android.settings.testutils.shadow.ShadowContentResolver;
 import com.android.settings.testutils.shadow.ShadowRestrictedLockUtilsInternal;
-import com.android.settings.utils.ActivityControllerWrapper;
 
 import org.junit.After;
 import org.junit.Before;
@@ -69,8 +68,7 @@
         MockitoAnnotations.initMocks(this);
         mContext = RuntimeEnvironment.application;
         mController = spy(new ChooseAccountPreferenceController(mContext, "controller_key"));
-        mActivity = (FragmentActivity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(FragmentActivity.class)).get();
+        mActivity = Robolectric.setupActivity(FragmentActivity.class);
         mPreferenceManager = new PreferenceManager(mContext);
         mPreferenceScreen = mPreferenceManager.createPreferenceScreen(mContext);
     }
diff --git a/tests/robotests/src/com/android/settings/accounts/EmergencyInfoPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accounts/EmergencyInfoPreferenceControllerTest.java
index 7433d7a..ece7ea9 100644
--- a/tests/robotests/src/com/android/settings/accounts/EmergencyInfoPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accounts/EmergencyInfoPreferenceControllerTest.java
@@ -40,7 +40,6 @@
 import com.android.settings.R;
 import com.android.settings.testutils.shadow.ShadowAccountManager;
 import com.android.settings.testutils.shadow.ShadowContentResolver;
-import com.android.settings.utils.ActivityControllerWrapper;
 import com.android.settingslib.search.SearchIndexableRaw;
 
 import org.junit.After;
@@ -76,8 +75,7 @@
         doReturn(mock(DevicePolicyManager.class)).when(mContext)
                 .getSystemService(Context.DEVICE_POLICY_SERVICE);
         mController = new EmergencyInfoPreferenceController(mContext, "test_key");
-        mPreference = new Preference((Context) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(Activity.class)).get());
+        mPreference = new Preference(Robolectric.setupActivity(Activity.class));
         mPreference.setKey(mController.getPreferenceKey());
         when(mScreen.findPreference(mPreference.getKey())).thenReturn(mPreference);
         when(mContext.getResources().getBoolean(R.bool.config_show_emergency_info_in_device_info))
diff --git a/tests/robotests/src/com/android/settings/accounts/RemoveAccountPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accounts/RemoveAccountPreferenceControllerTest.java
index 8d8f0c1..2052f46 100644
--- a/tests/robotests/src/com/android/settings/accounts/RemoveAccountPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accounts/RemoveAccountPreferenceControllerTest.java
@@ -53,7 +53,6 @@
 import com.android.settings.testutils.shadow.ShadowDevicePolicyManager;
 import com.android.settings.testutils.shadow.ShadowFragment;
 import com.android.settings.testutils.shadow.ShadowUserManager;
-import com.android.settings.utils.ActivityControllerWrapper;
 import com.android.settings.widget.RestrictedButton;
 import com.android.settingslib.widget.LayoutPreference;
 
@@ -113,8 +112,8 @@
         when(mAccountManager.getAuthenticatorTypesAsUser(anyInt()))
                 .thenReturn(new AuthenticatorDescription[0]);
         when(mAccountManager.getAccountsAsUser(anyInt())).thenReturn(new Account[0]);
-        mController = new RemoveAccountPreferenceController((Context) ActivityControllerWrapper
-                .setup(Robolectric.buildActivity(Activity.class)).get(), mFragment);
+        mController = new RemoveAccountPreferenceController(
+                Robolectric.setupActivity(Activity.class), mFragment);
     }
 
     @After
diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/AppBatteryPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/AppBatteryPreferenceControllerTest.java
index 5ca7415..638dabd 100644
--- a/tests/robotests/src/com/android/settings/applications/appinfo/AppBatteryPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/applications/appinfo/AppBatteryPreferenceControllerTest.java
@@ -43,7 +43,6 @@
 import com.android.settingslib.applications.ApplicationsState;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -117,7 +116,6 @@
         assertThat(mController.isAvailable()).isTrue();
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void testAppBattery_ifDisabled_shouldNotBeShown() {
diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/AppInfoDashboardFragmentTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/AppInfoDashboardFragmentTest.java
index 87e4a8f..4fdf560 100644
--- a/tests/robotests/src/com/android/settings/applications/appinfo/AppInfoDashboardFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/applications/appinfo/AppInfoDashboardFragmentTest.java
@@ -56,7 +56,6 @@
 
 import org.junit.After;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Answers;
@@ -156,7 +155,6 @@
         verify(menu.findItem(UNINSTALL_UPDATES), times(1)).setVisible(true);
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void onPrepareOptionsMenu_setUpdateMenuVisible_ifDisabledByDevice_shouldBeFalse() {
diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/AppMemoryPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/AppMemoryPreferenceControllerTest.java
index e948b7e..cc789c6 100644
--- a/tests/robotests/src/com/android/settings/applications/appinfo/AppMemoryPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/applications/appinfo/AppMemoryPreferenceControllerTest.java
@@ -37,7 +37,6 @@
 import com.android.settings.testutils.shadow.ShadowUserManager;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.ArgumentCaptor;
@@ -80,7 +79,6 @@
         when(mFragment.getActivity()).thenReturn(mActivity);
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void getAvailabilityStatus_developmentSettingsEnabled_shouldReturnAvailable() {
@@ -109,7 +107,6 @@
                 .isEqualTo(BasePreferenceController.UNSUPPORTED_ON_DEVICE);
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void getAvailabilityStatus_developmentSettingsDisabled_shouldReturnDisabled() {
diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/AppSettingPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/AppSettingPreferenceControllerTest.java
index 2482945..bda1e61 100644
--- a/tests/robotests/src/com/android/settings/applications/appinfo/AppSettingPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/applications/appinfo/AppSettingPreferenceControllerTest.java
@@ -26,7 +26,6 @@
 import androidx.preference.Preference;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -67,14 +66,12 @@
         mPreference.setKey(mController.getPreferenceKey());
     }
 
-    @Ignore
     @Test
     public void getAvailabilityStatus_noAppSetting_shouldNotBeAvailable() {
         assertThat(mController.isAvailable())
                 .isFalse();
     }
 
-    @Ignore
     @Test
     public void getAvailabilityStatus_noPackageName_shouldNotBeAvailable() {
         mController.setPackageName(null);
@@ -83,7 +80,6 @@
                 .isFalse();
     }
 
-    @Ignore
     @Test
     public void getAvailabilityStatus_hasAppSetting_shouldBeAvailable() {
         final ResolveInfo info = new ResolveInfo();
@@ -97,13 +93,11 @@
                 .isTrue();
     }
 
-    @Ignore
     @Test
     public void clickPreference_noAppSetting_shouldDoNothing() {
         assertThat(mController.handlePreferenceTreeClick(mPreference)).isFalse();
     }
 
-    @Ignore
     @Test
     public void clickPreference_hasAppSetting_shouldLaunchIntent() {
         final ResolveInfo info = new ResolveInfo();
diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/DefaultAppShortcutPreferenceControllerBaseTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/DefaultAppShortcutPreferenceControllerBaseTest.java
index dde5914..74c0bb5 100644
--- a/tests/robotests/src/com/android/settings/applications/appinfo/DefaultAppShortcutPreferenceControllerBaseTest.java
+++ b/tests/robotests/src/com/android/settings/applications/appinfo/DefaultAppShortcutPreferenceControllerBaseTest.java
@@ -33,10 +33,8 @@
 import androidx.preference.Preference;
 
 import com.android.settings.R;
-import com.android.settings.utils.ActivityControllerWrapper;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.ArgumentCaptor;
@@ -76,8 +74,7 @@
         MockitoAnnotations.initMocks(this);
         ShadowApplication shadowApplication = ShadowApplication.getInstance();
         shadowApplication.setSystemService(Context.ROLE_SERVICE, mRoleManager);
-        mActivity = (Activity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(Activity.class)).get();
+        mActivity = Robolectric.setupActivity(Activity.class);
         mShadowUserManager = shadowOf(mActivity.getSystemService(UserManager.class));
         mController = new TestRolePreferenceController(mActivity);
         when(mPreference.getKey()).thenReturn(mController.getPreferenceKey());
@@ -104,7 +101,6 @@
                 DefaultAppShortcutPreferenceControllerBase.UNSUPPORTED_ON_DEVICE);
     }
 
-    @Ignore
     @Test
     public void
     getAvailabilityStatus_noCallbackForIsRoleNotVisible_shouldReturnUnsupported() {
diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/InstantAppButtonDialogFragmentTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/InstantAppButtonDialogFragmentTest.java
index d035a64..85be59e 100644
--- a/tests/robotests/src/com/android/settings/applications/appinfo/InstantAppButtonDialogFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/applications/appinfo/InstantAppButtonDialogFragmentTest.java
@@ -35,7 +35,6 @@
 
 import com.android.settings.R;
 import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
-import com.android.settings.utils.ActivityControllerWrapper;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -58,9 +57,7 @@
 
     @Before
     public void setUp() {
-        final FragmentActivity activity = (FragmentActivity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(FragmentActivity.class)).get();
-
+        final FragmentActivity activity = Robolectric.setupActivity(FragmentActivity.class);
         mContext = spy(RuntimeEnvironment.application);
         mFragment = InstantAppButtonDialogFragment.newInstance(TEST_PACKAGE);
         mFragment.show(activity.getSupportFragmentManager(), "InstantAppButtonDialogFragment");
diff --git a/tests/robotests/src/com/android/settings/applications/assist/DefaultAssistPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/assist/DefaultAssistPreferenceControllerTest.java
index 88377b8..178a26f 100644
--- a/tests/robotests/src/com/android/settings/applications/assist/DefaultAssistPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/applications/assist/DefaultAssistPreferenceControllerTest.java
@@ -44,7 +44,6 @@
 import com.android.settingslib.applications.DefaultAppInfo;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -83,7 +82,6 @@
         assertThat(mController.isAvailable()).isTrue();
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void testAssistAndVoiceInput_ifDisabled_shouldNotBeShown() {
diff --git a/tests/robotests/src/com/android/settings/applications/specialaccess/premiumsms/PremiumSmsControllerTest.java b/tests/robotests/src/com/android/settings/applications/specialaccess/premiumsms/PremiumSmsControllerTest.java
index 523112c..ed4cbd1 100644
--- a/tests/robotests/src/com/android/settings/applications/specialaccess/premiumsms/PremiumSmsControllerTest.java
+++ b/tests/robotests/src/com/android/settings/applications/specialaccess/premiumsms/PremiumSmsControllerTest.java
@@ -29,7 +29,6 @@
 import com.android.settings.R;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.MockitoAnnotations;
@@ -61,7 +60,6 @@
         assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void getAvailability_disabledByCarrier_returnUnavailable() {
diff --git a/tests/robotests/src/com/android/settings/applications/specialaccess/premiumsms/PremiumSmsScreenPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/specialaccess/premiumsms/PremiumSmsScreenPreferenceControllerTest.java
index 37c3cc2..5982413 100644
--- a/tests/robotests/src/com/android/settings/applications/specialaccess/premiumsms/PremiumSmsScreenPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/applications/specialaccess/premiumsms/PremiumSmsScreenPreferenceControllerTest.java
@@ -29,7 +29,6 @@
 import com.android.settings.R;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.MockitoAnnotations;
@@ -61,7 +60,6 @@
         assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void getAvailability_disabledByCarrier_returnUnavailable() {
diff --git a/tests/robotests/src/com/android/settings/applications/specialaccess/vrlistener/EnabledVrListenersControllerTest.java b/tests/robotests/src/com/android/settings/applications/specialaccess/vrlistener/EnabledVrListenersControllerTest.java
index 8c4df32..df5dfc9 100644
--- a/tests/robotests/src/com/android/settings/applications/specialaccess/vrlistener/EnabledVrListenersControllerTest.java
+++ b/tests/robotests/src/com/android/settings/applications/specialaccess/vrlistener/EnabledVrListenersControllerTest.java
@@ -24,7 +24,6 @@
 import android.content.Context;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.robolectric.RobolectricTestRunner;
@@ -61,7 +60,6 @@
         assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void getAvailability_disabled_unavailable() {
diff --git a/tests/robotests/src/com/android/settings/applications/specialaccess/vrlistener/VrListenerScreenPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/specialaccess/vrlistener/VrListenerScreenPreferenceControllerTest.java
index cf4e334..1e5e235 100644
--- a/tests/robotests/src/com/android/settings/applications/specialaccess/vrlistener/VrListenerScreenPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/applications/specialaccess/vrlistener/VrListenerScreenPreferenceControllerTest.java
@@ -26,7 +26,6 @@
 import com.android.settings.testutils.shadow.ShadowActivityManager;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.robolectric.RobolectricTestRunner;
@@ -62,7 +61,6 @@
         assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void getAvailability_disabled_unavailable() {
diff --git a/tests/robotests/src/com/android/settings/biometrics/activeunlock/ActiveUnlockRequireBiometricSetupTest.java b/tests/robotests/src/com/android/settings/biometrics/activeunlock/ActiveUnlockRequireBiometricSetupTest.java
index 4ae1ecf..d3bbf24 100644
--- a/tests/robotests/src/com/android/settings/biometrics/activeunlock/ActiveUnlockRequireBiometricSetupTest.java
+++ b/tests/robotests/src/com/android/settings/biometrics/activeunlock/ActiveUnlockRequireBiometricSetupTest.java
@@ -29,7 +29,6 @@
 
 import com.android.settings.R;
 import com.android.settings.biometrics.BiometricEnrollActivity;
-import com.android.settings.utils.ActivityControllerWrapper;
 
 import com.google.android.setupcompat.PartnerCustomizationLayout;
 import com.google.android.setupcompat.template.FooterBarMixin;
@@ -50,8 +49,8 @@
 
     @Before
     public void setUp() {
-        mActivity = (ActiveUnlockRequireBiometricSetup) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(ActiveUnlockRequireBiometricSetup.class)).get();
+        mActivity = Robolectric.buildActivity(
+                ActiveUnlockRequireBiometricSetup.class).setup().get();
         mLayout = mActivity.findViewById(R.id.setup_wizard_layout);
     }
 
diff --git a/tests/robotests/src/com/android/settings/biometrics/face/FaceSettingsFooterPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/biometrics/face/FaceSettingsFooterPreferenceControllerTest.java
index f34616f..9de2fc2 100644
--- a/tests/robotests/src/com/android/settings/biometrics/face/FaceSettingsFooterPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/biometrics/face/FaceSettingsFooterPreferenceControllerTest.java
@@ -41,7 +41,6 @@
 import com.android.settingslib.widget.FooterPreference;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -57,7 +56,6 @@
 import java.util.ArrayList;
 import java.util.List;
 
-@Ignore
 @RunWith(RobolectricTestRunner.class)
 public class FaceSettingsFooterPreferenceControllerTest {
     @Rule
diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensorTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensorTest.java
index 198bfd7..8727153 100644
--- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensorTest.java
+++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensorTest.java
@@ -57,7 +57,6 @@
 import com.android.settings.password.ChooseLockSettingsHelper;
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settings.testutils.shadow.ShadowUtils;
-import com.android.settings.utils.ActivityControllerWrapper;
 
 import com.google.android.setupcompat.PartnerCustomizationLayout;
 import com.google.android.setupcompat.template.FooterBarMixin;
@@ -120,7 +119,7 @@
         props.add(newFingerprintSensorPropertiesInternal(TYPE_REAR));
         doReturn(props).when(mFingerprintManager).getSensorPropertiesInternal();
 
-        ActivityControllerWrapper.setup(mActivityController);
+        mActivityController.setup();
     }
 
     private void setupActivity_onUdfpsDevice() {
@@ -128,7 +127,7 @@
         props.add(newFingerprintSensorPropertiesInternal(TYPE_UDFPS_OPTICAL));
         doReturn(props).when(mFingerprintManager).getSensorPropertiesInternal();
 
-        ActivityControllerWrapper.setup(mActivityController);
+        mActivityController.setup();
     }
 
     private void setupActivity_onSfpsDevice() {
@@ -136,7 +135,7 @@
         props.add(newFingerprintSensorPropertiesInternal(TYPE_POWER_BUTTON));
         doReturn(props).when(mFingerprintManager).getSensorPropertiesInternal();
 
-        ActivityControllerWrapper.setup(mActivityController);
+        mActivityController.setup();
     }
 
     private FingerprintSensorPropertiesInternal newFingerprintSensorPropertiesInternal(
@@ -592,7 +591,7 @@
     private void gotEnrollingResult_resumeActivityAndVerifyResultThenForward(
             int testActivityResult) {
         // resume activity
-        mActivityController.start().resume();
+        mActivityController.start().resume().visible();
         verifyNoSidecar();
 
         // onActivityResult from Enrolling activity shall be forward back
@@ -612,8 +611,7 @@
             int testActivityResult, @NonNull Bundle savedInstance) {
         // Rebuild activity and use savedInstance to restore.
         buildActivity();
-        ActivityControllerWrapper.setup(mActivityController, savedInstance);
-        //mActivityController.setup(savedInstance);
+        mActivityController.setup(savedInstance);
         verifyNoSidecar();
 
         // onActivityResult from Enrolling activity shall be forward back
diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFindSensorTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFindSensorTest.java
index d5500ad..ae580d5 100644
--- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFindSensorTest.java
+++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFindSensorTest.java
@@ -31,7 +31,6 @@
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
 import com.android.settings.testutils.shadow.ShadowUtils;
-import com.android.settings.utils.ActivityControllerWrapper;
 
 import com.google.android.setupcompat.PartnerCustomizationLayout;
 import com.google.android.setupcompat.template.FooterBarMixin;
@@ -67,8 +66,8 @@
         final Intent intent = new Intent()
                 // Set the challenge token so the confirm screen will not be shown
                 .putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, new byte[0]);
-        mActivity = (SetupFingerprintEnrollFindSensor) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(SetupFingerprintEnrollFindSensor.class, intent)).get();
+        mActivity = Robolectric.buildActivity(SetupFingerprintEnrollFindSensor.class,
+                intent).setup().get();
         mTheme = mActivity.getTheme();
     }
 
diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFinishTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFinishTest.java
index ea9cb84..e238a0e 100644
--- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFinishTest.java
+++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFinishTest.java
@@ -30,7 +30,6 @@
 
 import com.android.settings.R;
 import com.android.settings.testutils.shadow.ShadowFingerprintManager;
-import com.android.settings.utils.ActivityControllerWrapper;
 
 import com.google.android.setupcompat.PartnerCustomizationLayout;
 import com.google.android.setupcompat.template.FooterBarMixin;
@@ -55,8 +54,7 @@
 
     @Before
     public void setUp() {
-        mActivity = (FingerprintEnrollFinish) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(FingerprintEnrollFinish.class)).get();
+        mActivity = Robolectric.buildActivity(FingerprintEnrollFinish.class).setup().get();
         mLayout = mActivity.findViewById(R.id.setup_wizard_layout);
         Shadows.shadowOf(application.getPackageManager())
                 .setSystemFeature(PackageManager.FEATURE_FINGERPRINT, true);
diff --git a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragmentTest.java b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragmentTest.java
index 89e682c..8ac56dc 100644
--- a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragmentTest.java
@@ -46,7 +46,6 @@
 
 import com.android.settings.R;
 import com.android.settings.testutils.FakeFeatureFactory;
-import com.android.settings.utils.ActivityControllerWrapper;
 import com.android.settingslib.bluetooth.CachedBluetoothDevice;
 import com.android.settingslib.bluetooth.LocalBluetoothManager;
 
@@ -231,9 +230,7 @@
         doReturn(mPreferenceScreen).when(fragment).getPreferenceScreen();
         doReturn(mUserManager).when(fragment).getUserManager();
 
-        mActivity = spy((FragmentActivity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(FragmentActivity.class)).get());
-
+        mActivity = spy(Robolectric.setupActivity(FragmentActivity.class));
         doReturn(mActivity).when(fragment).getActivity();
         doReturn(mContext).when(fragment).getContext();
 
diff --git a/tests/robotests/src/com/android/settings/bluetooth/BluetoothFindBroadcastsFragmentTest.java b/tests/robotests/src/com/android/settings/bluetooth/BluetoothFindBroadcastsFragmentTest.java
index 046a90c..f3f2b09 100644
--- a/tests/robotests/src/com/android/settings/bluetooth/BluetoothFindBroadcastsFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/bluetooth/BluetoothFindBroadcastsFragmentTest.java
@@ -36,7 +36,6 @@
 import androidx.preference.PreferenceCategory;
 
 import com.android.settings.testutils.FakeFeatureFactory;
-import com.android.settings.utils.ActivityControllerWrapper;
 import com.android.settingslib.bluetooth.CachedBluetoothDevice;
 import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcastAssistant;
 import com.android.settingslib.bluetooth.LocalBluetoothManager;
@@ -91,10 +90,7 @@
         doReturn(mCachedDevice).when(mFragment).getCachedDevice(any());
         doReturn(mBroadcastAssistant).when(mFragment).getLeBroadcastAssistant();
         doReturn(mPreferenceCategroy).when(mFragment).findPreference(any());
-
-        mActivity = (FragmentActivity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(FragmentActivity.class)).get();
-
+        mActivity = Robolectric.setupActivity(FragmentActivity.class);
         when(mFragment.getActivity()).thenReturn(mActivity);
 
         FragmentManager fragmentManager = mock(FragmentManager.class);
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/AvailableMediaDeviceGroupControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/AvailableMediaDeviceGroupControllerTest.java
index b89fc35..06dd42b 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/AvailableMediaDeviceGroupControllerTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/AvailableMediaDeviceGroupControllerTest.java
@@ -46,7 +46,6 @@
 import com.android.settings.testutils.shadow.ShadowAudioManager;
 import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
 import com.android.settings.testutils.shadow.ShadowBluetoothUtils;
-import com.android.settings.utils.ActivityControllerWrapper;
 import com.android.settingslib.bluetooth.BluetoothCallback;
 import com.android.settingslib.bluetooth.BluetoothEventManager;
 import com.android.settingslib.bluetooth.CachedBluetoothDevice;
@@ -109,10 +108,7 @@
         mPreference = new Preference(mContext);
         mPreference.setKey(PREFERENCE_KEY_1);
         mPreferenceGroup = spy(new PreferenceScreen(mContext, null));
-
-        final FragmentActivity mActivity = (FragmentActivity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(FragmentActivity.class)).get();
-
+        final FragmentActivity mActivity = Robolectric.setupActivity(FragmentActivity.class);
         when(mPreferenceGroup.getPreferenceManager()).thenReturn(mPreferenceManager);
         doReturn(mPackageManager).when(mContext).getPackageManager();
         doReturn(true).when(mPackageManager).hasSystemFeature(PackageManager.FEATURE_BLUETOOTH);
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/TopLevelConnectedDevicesPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/TopLevelConnectedDevicesPreferenceControllerTest.java
index eea561a..66f314d 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/TopLevelConnectedDevicesPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/TopLevelConnectedDevicesPreferenceControllerTest.java
@@ -24,7 +24,6 @@
 import android.content.Context;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.robolectric.RobolectricTestRunner;
@@ -48,7 +47,6 @@
         assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void getAvailabilityStatus_unsupportedWhenSet() {
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/usb/UsbDetailsFunctionsControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/usb/UsbDetailsFunctionsControllerTest.java
index 42c994a..8257b43 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/usb/UsbDetailsFunctionsControllerTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/usb/UsbDetailsFunctionsControllerTest.java
@@ -44,7 +44,6 @@
 import com.android.settingslib.widget.SelectorWithWidgetPreference;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -223,7 +222,6 @@
         assertThat(prefs.get(3).isChecked()).isFalse();
     }
 
-    @Ignore
     @Test
     public void onClickNone_mtpEnabled_shouldDisableMtp() {
         when(mUsbBackend.areFunctionsSupported(anyLong())).thenReturn(true);
diff --git a/tests/robotests/src/com/android/settings/core/CategoryMixinTest.java b/tests/robotests/src/com/android/settings/core/CategoryMixinTest.java
index d8f4a90..3040039 100644
--- a/tests/robotests/src/com/android/settings/core/CategoryMixinTest.java
+++ b/tests/robotests/src/com/android/settings/core/CategoryMixinTest.java
@@ -31,7 +31,6 @@
 import androidx.appcompat.app.AppCompatActivity;
 
 import com.android.settings.core.CategoryMixin.CategoryListener;
-import com.android.settings.utils.ActivityControllerWrapper;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -54,7 +53,7 @@
 
     @Test
     public void resumeActivity_shouldRegisterReceiver() {
-        ActivityControllerWrapper.setup(mActivityController);
+        mActivityController.setup();
 
         final TestActivity activity = mActivityController.get();
         assertThat(activity.getRegisteredReceivers()).isNotEmpty();
@@ -62,7 +61,7 @@
 
     @Test
     public void pauseActivity_shouldUnregisterReceiver() {
-        ActivityControllerWrapper.setup(mActivityController).pause();
+        mActivityController.setup().pause();
 
         final TestActivity activity = mActivityController.get();
         assertThat(activity.getRegisteredReceivers()).isEmpty();
@@ -70,7 +69,7 @@
 
     @Test
     public void onCategoriesChanged_listenerAdded_shouldNotifyChanged() {
-        ActivityControllerWrapper.setup(mActivityController).pause();
+        mActivityController.setup().pause();
         final CategoryMixin categoryMixin = mActivityController.get().getCategoryMixin();
         final CategoryListener listener = mock(CategoryListener.class);
         categoryMixin.addCategoryListener(listener);
diff --git a/tests/robotests/src/com/android/settings/core/InstrumentedActivityTest.java b/tests/robotests/src/com/android/settings/core/InstrumentedActivityTest.java
index 2f6940f..d74fab3 100644
--- a/tests/robotests/src/com/android/settings/core/InstrumentedActivityTest.java
+++ b/tests/robotests/src/com/android/settings/core/InstrumentedActivityTest.java
@@ -16,8 +16,6 @@
 
 package com.android.settings.core;
 
-import com.android.settings.utils.ActivityControllerWrapper;
-
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.robolectric.Robolectric;
@@ -33,8 +31,7 @@
      */
     @Test
     public void canInstantiate() {
-        ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(InstrumentedActivityTestable.class)).get();
+        Robolectric.buildActivity(InstrumentedActivityTestable.class).setup().get();
     }
 
     public static class InstrumentedActivityTestable extends InstrumentedActivity {
diff --git a/tests/robotests/src/com/android/settings/core/PreferenceControllerListHelperTest.java b/tests/robotests/src/com/android/settings/core/PreferenceControllerListHelperTest.java
index 34eab02..68dfb79 100644
--- a/tests/robotests/src/com/android/settings/core/PreferenceControllerListHelperTest.java
+++ b/tests/robotests/src/com/android/settings/core/PreferenceControllerListHelperTest.java
@@ -25,7 +25,6 @@
 import com.android.settingslib.core.AbstractPreferenceController;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.robolectric.RobolectricTestRunner;
@@ -45,7 +44,6 @@
         mContext = RuntimeEnvironment.application;
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void getControllers_shouldReturnAList() {
@@ -59,7 +57,6 @@
         }
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc998")
     public void getControllers_partialFailure_shouldReturnTheRest() {
diff --git a/tests/robotests/src/com/android/settings/core/PreferenceXmlParserUtilsTest.java b/tests/robotests/src/com/android/settings/core/PreferenceXmlParserUtilsTest.java
index b1aa321..f489123 100644
--- a/tests/robotests/src/com/android/settings/core/PreferenceXmlParserUtilsTest.java
+++ b/tests/robotests/src/com/android/settings/core/PreferenceXmlParserUtilsTest.java
@@ -34,7 +34,6 @@
 import com.android.settings.core.PreferenceXmlParserUtils.MetadataFlag;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.robolectric.RobolectricTestRunner;
@@ -51,7 +50,6 @@
  * If changing a preference file breaks a test in this test file, please replace its reference
  * with another preference with a matching replacement attribute.
  */
-@Ignore
 @RunWith(RobolectricTestRunner.class)
 public class PreferenceXmlParserUtilsTest {
 
diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java
index ecaf36f..cfbdd75 100644
--- a/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java
@@ -66,7 +66,6 @@
 import com.android.settingslib.drawer.Tile;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -236,7 +235,6 @@
         verify(mTestFragment.mScreen, never()).addPreference(nullable(Preference.class));
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void displayTilesAsPreference_shouldNotAddSuppressedTiles() {
diff --git a/tests/robotests/src/com/android/settings/datausage/AppDataUsageTest.java b/tests/robotests/src/com/android/settings/datausage/AppDataUsageTest.java
index fa61a33..6a1c0a6 100644
--- a/tests/robotests/src/com/android/settings/datausage/AppDataUsageTest.java
+++ b/tests/robotests/src/com/android/settings/datausage/AppDataUsageTest.java
@@ -67,7 +67,6 @@
 
 import org.junit.After;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Answers;
@@ -83,7 +82,6 @@
 import java.util.ArrayList;
 import java.util.List;
 
-@Ignore
 @RunWith(RobolectricTestRunner.class)
 @Config(shadows = {ShadowEntityHeaderController.class, ShadowRestrictedLockUtilsInternal.class})
 public class AppDataUsageTest {
diff --git a/tests/robotests/src/com/android/settings/datausage/ChartDataUsagePreferenceTest.java b/tests/robotests/src/com/android/settings/datausage/ChartDataUsagePreferenceTest.java
index aee91f3..aab67be 100644
--- a/tests/robotests/src/com/android/settings/datausage/ChartDataUsagePreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/datausage/ChartDataUsagePreferenceTest.java
@@ -31,7 +31,6 @@
 
 import com.android.settings.R;
 import com.android.settings.datausage.ChartDataUsagePreference.DataUsageSummaryNode;
-import com.android.settings.utils.ActivityControllerWrapper;
 import com.android.settings.widget.UsageView;
 import com.android.settingslib.net.NetworkCycleChartData;
 import com.android.settingslib.net.NetworkCycleData;
@@ -65,8 +64,8 @@
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
-        mActivity = spy((Activity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(Activity.class)).get());
+
+        mActivity = spy(Robolectric.setupActivity(Activity.class));
         mPreference = new ChartDataUsagePreference(mActivity, null /* attrs */);
         LayoutInflater inflater = LayoutInflater.from(mActivity);
         View view = inflater.inflate(mPreference.getLayoutResource(), null /* root */,
diff --git a/tests/robotests/src/com/android/settings/datausage/DataUsageListTest.java b/tests/robotests/src/com/android/settings/datausage/DataUsageListTest.java
index 762fbf8..4640efe 100644
--- a/tests/robotests/src/com/android/settings/datausage/DataUsageListTest.java
+++ b/tests/robotests/src/com/android/settings/datausage/DataUsageListTest.java
@@ -54,7 +54,6 @@
 import com.android.settingslib.net.NetworkCycleChartData;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.ArgumentCaptor;
@@ -71,7 +70,6 @@
 import java.util.ArrayList;
 import java.util.List;
 
-@Ignore
 @RunWith(RobolectricTestRunner.class)
 public class DataUsageListTest {
 
diff --git a/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceControllerTest.java
index 3f41c3f..a929873 100644
--- a/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceControllerTest.java
@@ -16,21 +16,16 @@
 
 package com.android.settings.datausage;
 
-import static android.content.pm.PackageManager.FEATURE_WIFI;
-
 import static com.android.settings.core.BasePreferenceController.AVAILABLE;
-
+import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE;
 import static com.google.common.truth.Truth.assertThat;
-
 import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 import android.content.Context;
-import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.net.NetworkTemplate;
 import android.telephony.SubscriptionInfo;
@@ -128,7 +123,6 @@
         doReturn(mTelephonyManager).when(mTelephonyManager)
                 .createForSubscriptionId(mDefaultSubscriptionId);
         doReturn(mPm).when(mActivity).getPackageManager();
-        doReturn(false).when(mPm).hasSystemFeature(eq(FEATURE_WIFI));
         doReturn(TelephonyManager.SIM_STATE_READY).when(mTelephonyManager).getSimState();
 
         mController = spy(new DataUsageSummaryPreferenceController(
@@ -156,12 +150,9 @@
         final long now = System.currentTimeMillis();
         final DataUsageController.DataUsageInfo info = createTestDataUsageInfo(now);
 
-        final Intent intent = new Intent();
-
         doReturn(info).when(mDataUsageController).getDataUsageInfo(any());
         setupTestDataUsage(LIMIT1, USAGE1, now - UPDATE_BACKOFF_MS);
         createTestDataPlan(info.cycleStart, info.cycleEnd);
-        doReturn(intent).when(mController).createManageSubscriptionIntent(mDefaultSubscriptionId);
 
         mController.updateState(mSummaryPreference);
 
@@ -173,10 +164,8 @@
         // TODO (b/170330084): return intent instead of null for mSummaryPreference
         verify(mSummaryPreference).setUsageInfo((info.cycleEnd / 1000) * 1000,
                 now - UPDATE_BACKOFF_MS,
-                CARRIER_NAME, 1 /* numPlans */, null /* launchIntent */);
+                CARRIER_NAME, 1 /* numPlans */);
         verify(mSummaryPreference).setChartEnabled(true);
-        verify(mSummaryPreference).setWifiMode(false /* isWifiMode */, null /* usagePeriod */,
-                false /* isSingleWifi */);
     }
 
     @Test
@@ -184,8 +173,6 @@
         final long now = System.currentTimeMillis();
         final DataUsageController.DataUsageInfo info = createTestDataUsageInfo(now);
 
-        final Intent intent = new Intent();
-
         doReturn(info).when(mDataUsageController).getDataUsageInfo(any());
         setupTestDataUsage(LIMIT1, USAGE1, now - UPDATE_BACKOFF_MS);
 
@@ -200,11 +187,8 @@
                 info.cycleEnd,
                 -1L /* snapshotTime */,
                 CARRIER_NAME,
-                0 /* numPlans */,
-                null /* launchIntent */);
+                0 /* numPlans */);
         verify(mSummaryPreference).setChartEnabled(true);
-        verify(mSummaryPreference).setWifiMode(false /* isWifiMode */, null /* usagePeriod */,
-                false /* isSingleWifi */);
     }
 
     @Test
@@ -227,11 +211,8 @@
                 info.cycleEnd,
                 -1L /* snapshotTime */,
                 null /* carrierName */,
-                0 /* numPlans */,
-                null /* launchIntent */);
+                0 /* numPlans */);
         verify(mSummaryPreference).setChartEnabled(true);
-        verify(mSummaryPreference).setWifiMode(false /* isWifiMode */, null /* usagePeriod */,
-                false /* isSingleWifi */);
     }
 
     @Test
@@ -254,11 +235,8 @@
                 info.cycleEnd,
                 -1L /* snapshotTime */,
                 null /* carrierName */,
-                0 /* numPlans */,
-                null /* launchIntent */);
+                0 /* numPlans */);
         verify(mSummaryPreference).setChartEnabled(false);
-        verify(mSummaryPreference).setWifiMode(false /* isWifiMode */, null /* usagePeriod */,
-                false /* isSingleWifi */);
     }
 
     @Test
@@ -268,8 +246,6 @@
         info.warningLevel = 0L;
         info.limitLevel = 0L;
 
-        final Intent intent = new Intent();
-
         doReturn(info).when(mDataUsageController).getDataUsageInfo(any());
         setupTestDataUsage(LIMIT1, USAGE1, now - UPDATE_BACKOFF_MS);
 
@@ -284,8 +260,6 @@
         info.warningLevel = BillingCycleSettings.MIB_IN_BYTES;
         info.limitLevel = 0L;
 
-        final Intent intent = new Intent();
-
         doReturn(info).when(mDataUsageController).getDataUsageInfo(any());
         setupTestDataUsage(LIMIT1, USAGE1, now - UPDATE_BACKOFF_MS);
 
@@ -304,8 +278,6 @@
         info.warningLevel = 0L;
         info.limitLevel = BillingCycleSettings.MIB_IN_BYTES;
 
-        final Intent intent = new Intent();
-
         doReturn(info).when(mDataUsageController).getDataUsageInfo(any());
         setupTestDataUsage(LIMIT1, USAGE1, now - UPDATE_BACKOFF_MS);
 
@@ -324,8 +296,6 @@
         info.warningLevel = BillingCycleSettings.MIB_IN_BYTES;
         info.limitLevel = BillingCycleSettings.MIB_IN_BYTES;
 
-        final Intent intent = new Intent();
-
         doReturn(info).when(mDataUsageController).getDataUsageInfo(any());
         setupTestDataUsage(LIMIT1, USAGE1, now - UPDATE_BACKOFF_MS);
 
@@ -335,8 +305,6 @@
         verify(mSummaryPreference).setLimitInfo(captor.capture());
         CharSequence value = captor.getValue();
         assertThat(value.toString()).isEqualTo("1.00 MB data warning / 1.00 MB data limit");
-        verify(mSummaryPreference).setWifiMode(false /* isWifiMode */, null /* usagePeriod */,
-                false /* isSingleWifi */);
     }
 
     @Test
@@ -345,12 +313,11 @@
     }
 
     @Test
-    public void testMobileData_noSimWifi_preferenceDisabled() {
+    public void testMobileData_noSim_preferenceDisabled() {
         final int subscriptionId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
         mController.init(subscriptionId);
         mController.mDataUsageController = mDataUsageController;
-        doReturn(true).when(mPm).hasSystemFeature(eq(FEATURE_WIFI));
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE);
     }
 
     private DataUsageController.DataUsageInfo createTestDataUsageInfo(long now) {
diff --git a/tests/robotests/src/com/android/settings/datausage/WifiDataUsageSummaryPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/datausage/WifiDataUsageSummaryPreferenceControllerTest.java
deleted file mode 100644
index a8ac29f..0000000
--- a/tests/robotests/src/com/android/settings/datausage/WifiDataUsageSummaryPreferenceControllerTest.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (C) 2022 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.datausage;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyBoolean;
-import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.spy;
-
-import android.content.Context;
-import android.telephony.TelephonyManager;
-
-import androidx.fragment.app.FragmentActivity;
-import androidx.test.core.app.ApplicationProvider;
-
-import com.android.settingslib.net.DataUsageController;
-
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.mockito.junit.MockitoJUnit;
-import org.mockito.junit.MockitoRule;
-import org.robolectric.RobolectricTestRunner;
-
-import java.util.HashSet;
-import java.util.Set;
-
-@RunWith(RobolectricTestRunner.class)
-public class WifiDataUsageSummaryPreferenceControllerTest {
-
-    @Rule
-    public final MockitoRule mMockitoRule = MockitoJUnit.rule();
-    @Spy
-    Context mContext = ApplicationProvider.getApplicationContext();
-    @Mock
-    FragmentActivity mActivity;
-    @Mock
-    TelephonyManager mTelephonyManager;
-    @Mock
-    DataUsageSummaryPreference mSummaryPreference;
-    @Mock
-    DataUsageController mDataUsageController;
-    @Mock
-    DataUsageController.DataUsageInfo mDataUsageInfo;
-
-    WifiDataUsageSummaryPreferenceController mController;
-    Set<String> mAllNetworkKeys = new HashSet<>();
-
-    @Before
-    public void setUp() {
-        doReturn(mContext.getResources()).when(mActivity).getResources();
-        doReturn(mTelephonyManager).when(mActivity).getSystemService(TelephonyManager.class);
-        doNothing().when(mSummaryPreference).setWifiMode(anyBoolean(), anyString(), anyBoolean());
-        doReturn(mDataUsageInfo).when(mDataUsageController).getDataUsageInfo(any());
-
-        mController = spy(new WifiDataUsageSummaryPreferenceController(mActivity, mAllNetworkKeys));
-        doReturn(mDataUsageController).when(mController).createDataUsageController(any());
-    }
-
-    @Test
-    public void updateState_nullOfDataUsageController_shouldNotCrash() {
-        mController.mDataUsageController = null;
-
-        mController.updateState(mSummaryPreference);
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/datetime/timezone/BaseTimeZonePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/datetime/timezone/BaseTimeZonePreferenceControllerTest.java
index d952438..865c2eb 100644
--- a/tests/robotests/src/com/android/settings/datetime/timezone/BaseTimeZonePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/datetime/timezone/BaseTimeZonePreferenceControllerTest.java
@@ -18,15 +18,11 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import static org.mockito.Mockito.spy;
-
 import android.app.Activity;
 import android.content.Context;
 
 import androidx.preference.Preference;
 
-import com.android.settings.utils.ActivityControllerWrapper;
-
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -40,8 +36,7 @@
 
     @Before
     public void setUp() {
-        mActivity = spy((Activity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(Activity.class)).get());
+        mActivity = Robolectric.setupActivity(Activity.class);
     }
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/datetime/timezone/FixedOffsetPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/datetime/timezone/FixedOffsetPreferenceControllerTest.java
index 5b6d8bd..4a6f92f 100644
--- a/tests/robotests/src/com/android/settings/datetime/timezone/FixedOffsetPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/datetime/timezone/FixedOffsetPreferenceControllerTest.java
@@ -23,8 +23,6 @@
 
 import androidx.preference.Preference;
 
-import com.android.settings.utils.ActivityControllerWrapper;
-
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -38,8 +36,7 @@
 
     @Before
     public void setUp() {
-        mActivity = (Activity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(Activity.class)).get();
+        mActivity = Robolectric.setupActivity(Activity.class);
     }
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/datetime/timezone/RegionPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/datetime/timezone/RegionPreferenceControllerTest.java
index 6689a1f..ea0be24 100644
--- a/tests/robotests/src/com/android/settings/datetime/timezone/RegionPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/datetime/timezone/RegionPreferenceControllerTest.java
@@ -18,14 +18,10 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import static org.mockito.Mockito.spy;
-
 import android.app.Activity;
 
 import androidx.preference.Preference;
 
-import com.android.settings.utils.ActivityControllerWrapper;
-
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -39,8 +35,7 @@
 
     @Before
     public void setUp() {
-        mActivity = spy((Activity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(Activity.class)).get());
+        mActivity = Robolectric.setupActivity(Activity.class);
     }
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/datetime/timezone/RegionSearchPickerTest.java b/tests/robotests/src/com/android/settings/datetime/timezone/RegionSearchPickerTest.java
index 69d46ea..78055cf 100644
--- a/tests/robotests/src/com/android/settings/datetime/timezone/RegionSearchPickerTest.java
+++ b/tests/robotests/src/com/android/settings/datetime/timezone/RegionSearchPickerTest.java
@@ -33,7 +33,6 @@
 import com.android.settings.datetime.timezone.BaseTimeZoneAdapter.ItemViewHolder;
 import com.android.settings.datetime.timezone.RegionSearchPicker.RegionItem;
 import com.android.settings.datetime.timezone.model.TimeZoneData;
-import com.android.settings.utils.ActivityControllerWrapper;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -143,8 +142,7 @@
     @Implements(Fragment.class)
     public static class ShadowFragment {
 
-        private FragmentActivity mActivity = (FragmentActivity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(FragmentActivity.class)).get();
+        private FragmentActivity mActivity = Robolectric.setupActivity(FragmentActivity.class);
 
         @Implementation
         public final FragmentActivity getActivity() {
diff --git a/tests/robotests/src/com/android/settings/datetime/timezone/RegionZonePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/datetime/timezone/RegionZonePreferenceControllerTest.java
index f0cb6e8..6d1bf66 100644
--- a/tests/robotests/src/com/android/settings/datetime/timezone/RegionZonePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/datetime/timezone/RegionZonePreferenceControllerTest.java
@@ -23,8 +23,6 @@
 
 import androidx.preference.Preference;
 
-import com.android.settings.utils.ActivityControllerWrapper;
-
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -38,8 +36,7 @@
 
     @Before
     public void setUp() {
-        mActivity = (Activity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(Activity.class)).get();
+        mActivity = Robolectric.setupActivity(Activity.class);
     }
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/development/CameraLaserSensorPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/CameraLaserSensorPreferenceControllerTest.java
index 9268a72..d469c71 100644
--- a/tests/robotests/src/com/android/settings/development/CameraLaserSensorPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/development/CameraLaserSensorPreferenceControllerTest.java
@@ -32,7 +32,6 @@
 import androidx.preference.SwitchPreference;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -60,7 +59,6 @@
         mController.displayPreference(mScreen);
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void isAvailable_withConfigNoShow_shouldReturnFalse() {
diff --git a/tests/robotests/src/com/android/settings/development/CoolColorTemperaturePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/CoolColorTemperaturePreferenceControllerTest.java
index f0e8292..cf84618 100644
--- a/tests/robotests/src/com/android/settings/development/CoolColorTemperaturePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/development/CoolColorTemperaturePreferenceControllerTest.java
@@ -31,7 +31,6 @@
 import androidx.preference.SwitchPreference;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -100,7 +99,6 @@
         verify(mPreference).setChecked(false);
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void isAvailable_shouldBeFalse() {
diff --git a/tests/robotests/src/com/android/settings/development/DevelopmentMemtagPageTest.java b/tests/robotests/src/com/android/settings/development/DevelopmentMemtagPageTest.java
index 052f705..2d4ce43 100644
--- a/tests/robotests/src/com/android/settings/development/DevelopmentMemtagPageTest.java
+++ b/tests/robotests/src/com/android/settings/development/DevelopmentMemtagPageTest.java
@@ -24,7 +24,6 @@
 import com.android.settings.R;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.robolectric.RobolectricTestRunner;
diff --git a/tests/robotests/src/com/android/settings/development/DevelopmentMemtagPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/DevelopmentMemtagPreferenceControllerTest.java
index 18cacc6..d4af470 100644
--- a/tests/robotests/src/com/android/settings/development/DevelopmentMemtagPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/development/DevelopmentMemtagPreferenceControllerTest.java
@@ -38,7 +38,6 @@
 import com.android.settingslib.testutils.shadow.ShadowInteractionJankMonitor;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -47,7 +46,6 @@
 import org.robolectric.annotation.Config;
 import org.robolectric.shadows.ShadowSystemProperties;
 
-@Ignore
 @RunWith(RobolectricTestRunner.class)
 @Config(
         shadows = {
diff --git a/tests/robotests/src/com/android/settings/development/DevelopmentSettingsDisabledActivityTest.java b/tests/robotests/src/com/android/settings/development/DevelopmentSettingsDisabledActivityTest.java
index ccfd68b..6b4068d 100644
--- a/tests/robotests/src/com/android/settings/development/DevelopmentSettingsDisabledActivityTest.java
+++ b/tests/robotests/src/com/android/settings/development/DevelopmentSettingsDisabledActivityTest.java
@@ -21,7 +21,6 @@
 import android.content.Context;
 
 import com.android.settings.R;
-import com.android.settings.utils.ActivityControllerWrapper;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -35,8 +34,7 @@
 
     @Test
     public void launchActivity_shouldShowToast() {
-        ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(DevelopmentSettingsDisabledActivity.class)).get();
+        Robolectric.setupActivity(DevelopmentSettingsDisabledActivity.class);
 
         final Context context = RuntimeEnvironment.application;
         assertThat(ShadowToast.getTextOfLatestToast())
diff --git a/tests/robotests/src/com/android/settings/development/RebootWithMtePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/RebootWithMtePreferenceControllerTest.java
index ad7d48e..f1e7d3f 100644
--- a/tests/robotests/src/com/android/settings/development/RebootWithMtePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/development/RebootWithMtePreferenceControllerTest.java
@@ -27,7 +27,6 @@
 import androidx.test.core.app.ApplicationProvider;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -60,7 +59,6 @@
         assertFalse(mController.isAvailable());
     }
 
-    @Ignore
     @Test
     public void onAvailable_sysPropEnabled() {
         SystemProperties.set("ro.arm64.memtag.bootctl_supported", "1");
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/SecurityPatchLevelPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/SecurityPatchLevelPreferenceControllerTest.java
index 9da9e20..ccc91e6 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/SecurityPatchLevelPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/firmwareversion/SecurityPatchLevelPreferenceControllerTest.java
@@ -35,8 +35,6 @@
 
 import androidx.preference.Preference;
 
-import com.android.settings.utils.ActivityControllerWrapper;
-
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -60,8 +58,7 @@
     @Before
     public void setup() {
         MockitoAnnotations.initMocks(this);
-        mContext = spy((Context) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(Activity.class)).get());
+        mContext = spy(Robolectric.setupActivity(Activity.class));
     }
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/legal/ModuleLicensePreferenceTest.java b/tests/robotests/src/com/android/settings/deviceinfo/legal/ModuleLicensePreferenceTest.java
index 304c5a5..08eec9e 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/legal/ModuleLicensePreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/legal/ModuleLicensePreferenceTest.java
@@ -23,8 +23,6 @@
 import android.content.Intent;
 import android.content.pm.ModuleInfo;
 
-import com.android.settings.utils.ActivityControllerWrapper;
-
 import org.junit.Before;
 import org.junit.Ignore;
 import org.junit.Test;
@@ -44,8 +42,7 @@
     @Before
     public void setup() {
         MockitoAnnotations.initMocks(this);
-        mContext = (Context) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(Activity.class)).get();
+        mContext = Robolectric.setupActivity(Activity.class);
         mModuleInfo = new ModuleInfo();
         mModuleInfo.setPackageName(PACKAGE_NAME);
         mModuleInfo.setName(NAME);
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/legal/WallpaperAttributionsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/legal/WallpaperAttributionsPreferenceControllerTest.java
index 7831207..c06f069 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/legal/WallpaperAttributionsPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/legal/WallpaperAttributionsPreferenceControllerTest.java
@@ -22,7 +22,6 @@
 import com.android.settings.core.BasePreferenceController;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.MockitoAnnotations;
@@ -49,7 +48,6 @@
                 .isEqualTo(BasePreferenceController.AVAILABLE);
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void getAvailabilityStatus_ifNotVisible_false() {
diff --git a/tests/robotests/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceControllerTest.java
index 5d8d46b..3ad14e5 100644
--- a/tests/robotests/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceControllerTest.java
@@ -36,7 +36,6 @@
 import com.android.settings.testutils.shadow.ShadowSecureSettings;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -140,7 +139,6 @@
         assertThat(controller.isSliceable()).isTrue();
     }
 
-    @Ignore
     @Test
     public void isSliceableIncorrectKey_returnsFalse() {
         final AmbientDisplayAlwaysOnPreferenceController controller =
@@ -148,7 +146,6 @@
         assertThat(controller.isSliceable()).isFalse();
     }
 
-    @Ignore
     @Test
     public void isPublicSlice_returnTrue() {
         assertThat(mController.isPublicSlice()).isTrue();
diff --git a/tests/robotests/src/com/android/settings/display/BrightnessLevelPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/BrightnessLevelPreferenceControllerTest.java
index 1076d15..bbc9cf3 100644
--- a/tests/robotests/src/com/android/settings/display/BrightnessLevelPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/BrightnessLevelPreferenceControllerTest.java
@@ -40,7 +40,6 @@
 import androidx.preference.PreferenceScreen;
 
 import com.android.settings.core.SettingsBaseActivity;
-import com.android.settings.utils.ActivityControllerWrapper;
 import com.android.settingslib.transition.SettingsTransitionHelper;
 
 import org.junit.Before;
@@ -166,9 +165,7 @@
 
     @Test
     public void handlePreferenceTreeClick_transitionTypeNone_shouldPassToNextActivity() {
-        final Activity activity = (Activity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(Activity.class)).get();
-
+        final Activity activity = Robolectric.setupActivity(Activity.class);
         final BrightnessLevelPreferenceController controller =
                 new BrightnessLevelPreferenceController(activity, null);
         final ShadowActivity shadowActivity = shadowOf(activity);
diff --git a/tests/robotests/src/com/android/settings/display/ControlsTrivialPrivacyPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/ControlsTrivialPrivacyPreferenceControllerTest.java
index f276af0..a82e1f1 100644
--- a/tests/robotests/src/com/android/settings/display/ControlsTrivialPrivacyPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/ControlsTrivialPrivacyPreferenceControllerTest.java
@@ -44,7 +44,6 @@
 import com.android.settings.core.BasePreferenceController;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -147,7 +146,6 @@
         verify(mPreference, atLeastOnce()).setSummary(mController.getSummary());
     }
 
-    @Ignore
     @Test
     public void updateStateWithCustomizableLockScreenQuickAffordancesEnabled() {
         setCustomizableLockScreenQuickAffordancesEnabled(true);
@@ -168,7 +166,6 @@
                 BasePreferenceController.DISABLED_DEPENDENT_SETTING);
     }
 
-    @Ignore
     @Test
     public void getAvailabilityStatusWithCustomizableLockScreenQuickAffordancesEnabled() {
         setCustomizableLockScreenQuickAffordancesEnabled(true);
diff --git a/tests/robotests/src/com/android/settings/display/SmartAutoRotatePreferenceFragmentTest.java b/tests/robotests/src/com/android/settings/display/SmartAutoRotatePreferenceFragmentTest.java
index 01bb338..bdff55e 100644
--- a/tests/robotests/src/com/android/settings/display/SmartAutoRotatePreferenceFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/display/SmartAutoRotatePreferenceFragmentTest.java
@@ -50,7 +50,6 @@
 import com.android.settingslib.devicestate.DeviceStateRotationLockSettingsManager;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -177,7 +176,6 @@
         assertThat(preferenceControllers).isEmpty();
     }
 
-    @Ignore
     @Test
     public void createPreferenceControllers_settableDeviceStates_returnsDeviceStateControllers() {
         enableDeviceStateSettableRotationStates(new String[]{"0:1", "1:1"},
diff --git a/tests/robotests/src/com/android/settings/display/TopLevelDisplayPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/TopLevelDisplayPreferenceControllerTest.java
index 2ba0557..a5149b9 100644
--- a/tests/robotests/src/com/android/settings/display/TopLevelDisplayPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/TopLevelDisplayPreferenceControllerTest.java
@@ -26,7 +26,6 @@
 import android.content.Context;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.MockitoAnnotations;
@@ -51,7 +50,6 @@
         assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void getAvailabilityStatus_unsupportedWhenSet() {
diff --git a/tests/robotests/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelperTest.java b/tests/robotests/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelperTest.java
index 8ae2a8d..6db008d 100644
--- a/tests/robotests/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelperTest.java
+++ b/tests/robotests/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelperTest.java
@@ -45,7 +45,6 @@
 import com.android.settings.testutils.shadow.ShadowActivity;
 import com.android.settings.testutils.shadow.ShadowDevicePolicyManager;
 import com.android.settings.testutils.shadow.ShadowUserManager;
-import com.android.settings.utils.ActivityControllerWrapper;
 import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
 
 import org.junit.Before;
@@ -78,8 +77,7 @@
 
     @Before
     public void setUp() {
-        mActivity = (CustomActivity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(CustomActivity.class)).get();
+        mActivity = Robolectric.setupActivity(CustomActivity.class);
         mActivityShadow = Shadow.extract(mActivity);
         mHelper = new ActionDisabledByAdminDialogHelper(mActivity);
     }
diff --git a/tests/robotests/src/com/android/settings/enterprise/ManageDeviceAdminPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/enterprise/ManageDeviceAdminPreferenceControllerTest.java
index e91f56f..a2a0de4 100644
--- a/tests/robotests/src/com/android/settings/enterprise/ManageDeviceAdminPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/enterprise/ManageDeviceAdminPreferenceControllerTest.java
@@ -31,7 +31,6 @@
 import com.android.settingslib.utils.StringUtil;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -84,7 +83,6 @@
         assertThat(mController.isAvailable()).isTrue();
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void isAvailable_whenNotVisible_isFalse() {
diff --git a/tests/robotests/src/com/android/settings/flashlight/FlashlightHandleActivityTest.java b/tests/robotests/src/com/android/settings/flashlight/FlashlightHandleActivityTest.java
index a7bd21c..b0517cb 100644
--- a/tests/robotests/src/com/android/settings/flashlight/FlashlightHandleActivityTest.java
+++ b/tests/robotests/src/com/android/settings/flashlight/FlashlightHandleActivityTest.java
@@ -23,7 +23,6 @@
 import com.android.settingslib.search.SearchIndexableRaw;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.robolectric.RobolectricTestRunner;
@@ -50,7 +49,6 @@
         assertThat(data).isEmpty();
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void getRawDataToIndex_sliceSupported_returnData() {
diff --git a/tests/robotests/src/com/android/settings/homepage/SettingsHomepageActivityTest.java b/tests/robotests/src/com/android/settings/homepage/SettingsHomepageActivityTest.java
index 6bb8cd6..c281dca 100644
--- a/tests/robotests/src/com/android/settings/homepage/SettingsHomepageActivityTest.java
+++ b/tests/robotests/src/com/android/settings/homepage/SettingsHomepageActivityTest.java
@@ -55,7 +55,6 @@
 
 import org.junit.After;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.ArgumentCaptor;
@@ -106,7 +105,6 @@
         assertThat(avatarView.getVisibility()).isNotEqualTo(View.VISIBLE);
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void launch_configEnabled_shouldShowAvatar() {
diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardManagerTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardManagerTest.java
index f3c3e12..f18d94f 100644
--- a/tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardManagerTest.java
+++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardManagerTest.java
@@ -61,7 +61,6 @@
 import com.android.settingslib.core.lifecycle.events.OnStop;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -152,7 +151,6 @@
         assertThat(actual).containsExactlyElementsIn(expected);
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void loadContextualCards_restartLoaderNotNeeded_shouldInitLoader() {
@@ -162,7 +160,6 @@
                 any(ContextualCardManager.CardContentLoaderCallbacks.class));
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void loadContextualCards_restartLoaderNeeded_shouldRestartLoaderAndSetIsFirstLaunch() {
diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/BackgroundDataConditionControllerTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/BackgroundDataConditionControllerTest.java
index 1413be3..aa4e11f 100644
--- a/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/BackgroundDataConditionControllerTest.java
+++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/BackgroundDataConditionControllerTest.java
@@ -25,7 +25,6 @@
 import android.net.NetworkPolicyManager;
 
 import com.android.settings.Settings;
-import com.android.settings.utils.ActivityControllerWrapper;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -53,8 +52,7 @@
         MockitoAnnotations.initMocks(this);
         ShadowApplication.getInstance().setSystemService(Context.NETWORK_POLICY_SERVICE,
                 mNetworkPolicyManager);
-        mActivity = (Activity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(Activity.class)).get();
+        mActivity = Robolectric.setupActivity(Activity.class);
         mController = new BackgroundDataConditionController(mActivity, mConditionManager);
     }
 
diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/WorkModeConditionControllerTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/WorkModeConditionControllerTest.java
index aedd601..299780c 100644
--- a/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/WorkModeConditionControllerTest.java
+++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/WorkModeConditionControllerTest.java
@@ -24,7 +24,6 @@
 import android.content.ComponentName;
 
 import com.android.settings.Settings;
-import com.android.settings.utils.ActivityControllerWrapper;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -47,8 +46,7 @@
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
-        mActivity = spy((Activity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(Activity.class)).get());
+        mActivity = spy(Robolectric.setupActivity(Activity.class));
         mController = new WorkModeConditionController(mActivity, mConditionManager);
     }
 
diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/legacysuggestion/LegacySuggestionContextualCardControllerTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/legacysuggestion/LegacySuggestionContextualCardControllerTest.java
index 582c4a1..502a62b 100644
--- a/tests/robotests/src/com/android/settings/homepage/contextualcards/legacysuggestion/LegacySuggestionContextualCardControllerTest.java
+++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/legacysuggestion/LegacySuggestionContextualCardControllerTest.java
@@ -34,7 +34,6 @@
 import com.android.settingslib.suggestions.SuggestionController;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -69,7 +68,6 @@
         assertThat(controller.mSuggestionController).isNotNull();
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void init_configOff_shouldNotCreateSuggestionController() {
diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardControllerTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardControllerTest.java
index b8b2aa8..8c25260 100644
--- a/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardControllerTest.java
+++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardControllerTest.java
@@ -144,7 +144,6 @@
                 .isEqualTo(ContextualCardFeedbackDialog.class.getName());
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void isFeedbackEnabled_hasFeedbackEmail_debug_returnTrue() {
diff --git a/tests/robotests/src/com/android/settings/inputmethod/GameControllerPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/GameControllerPreferenceControllerTest.java
index ea4675d..ae5afd2 100644
--- a/tests/robotests/src/com/android/settings/inputmethod/GameControllerPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/inputmethod/GameControllerPreferenceControllerTest.java
@@ -32,7 +32,6 @@
 import android.view.InputDevice;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Answers;
@@ -111,7 +110,6 @@
         assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE);
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void getAvailabilityStatus_ifDisabled_shouldReturnDisabled() {
diff --git a/tests/robotests/src/com/android/settings/inputmethod/InputMethodAndSubtypeEnablerTest.java b/tests/robotests/src/com/android/settings/inputmethod/InputMethodAndSubtypeEnablerTest.java
index 5d67955..2d4af3c 100644
--- a/tests/robotests/src/com/android/settings/inputmethod/InputMethodAndSubtypeEnablerTest.java
+++ b/tests/robotests/src/com/android/settings/inputmethod/InputMethodAndSubtypeEnablerTest.java
@@ -27,7 +27,6 @@
 import androidx.fragment.app.FragmentActivity;
 
 import com.android.settings.R;
-import com.android.settings.utils.ActivityControllerWrapper;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -49,8 +48,7 @@
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
-        mActivity = (FragmentActivity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(FragmentActivity.class)).get();
+        mActivity = Robolectric.setupActivity(FragmentActivity.class);
         mFragment = spy(new InputMethodAndSubtypeEnabler());
         when(mFragment.getActivity()).thenReturn(mActivity);
     }
diff --git a/tests/robotests/src/com/android/settings/inputmethod/KeyboardLayoutPickerControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/KeyboardLayoutPickerControllerTest.java
index 7840bfd..734f610 100644
--- a/tests/robotests/src/com/android/settings/inputmethod/KeyboardLayoutPickerControllerTest.java
+++ b/tests/robotests/src/com/android/settings/inputmethod/KeyboardLayoutPickerControllerTest.java
@@ -39,7 +39,6 @@
 import com.android.settings.testutils.shadow.ShadowInputDevice;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -50,7 +49,6 @@
 import org.robolectric.annotation.Config;
 import org.robolectric.shadows.ShadowApplication;
 
-@Ignore
 @RunWith(RobolectricTestRunner.class)
 public class KeyboardLayoutPickerControllerTest {
 
diff --git a/tests/robotests/src/com/android/settings/inputmethod/VirtualKeyboardPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/VirtualKeyboardPreferenceControllerTest.java
index 0a5be27..dd6da3b 100644
--- a/tests/robotests/src/com/android/settings/inputmethod/VirtualKeyboardPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/inputmethod/VirtualKeyboardPreferenceControllerTest.java
@@ -34,7 +34,6 @@
 import androidx.preference.Preference;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -78,7 +77,6 @@
         assertThat(mController.isAvailable()).isTrue();
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void testVirtualKeyboard_ifDisabled_shouldNotBeShown() {
diff --git a/tests/robotests/src/com/android/settings/language/LanguageAndInputSettingsTest.java b/tests/robotests/src/com/android/settings/language/LanguageAndInputSettingsTest.java
index e2c39ec..4429dd7 100644
--- a/tests/robotests/src/com/android/settings/language/LanguageAndInputSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/language/LanguageAndInputSettingsTest.java
@@ -45,7 +45,6 @@
 import com.android.settingslib.core.lifecycle.Lifecycle;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Answers;
@@ -115,7 +114,6 @@
         assertThat(controllers.isEmpty()).isFalse();
     }
 
-    @Ignore
     @Test
     public void testNonIndexableKeys_existInXmlLayout() {
         final Context context = spy(RuntimeEnvironment.application);
diff --git a/tests/robotests/src/com/android/settings/language/PhoneLanguagePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/language/PhoneLanguagePreferenceControllerTest.java
index 8a362cd..aa4c32e 100644
--- a/tests/robotests/src/com/android/settings/language/PhoneLanguagePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/language/PhoneLanguagePreferenceControllerTest.java
@@ -31,7 +31,6 @@
 import com.android.settings.testutils.FakeFeatureFactory;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -94,7 +93,6 @@
                 .isEqualTo(BasePreferenceController.CONDITIONALLY_UNAVAILABLE);
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void testIsAvailable_ifDisabled_shouldReturnFalse() {
diff --git a/tests/robotests/src/com/android/settings/language/PointerSpeedControllerTest.java b/tests/robotests/src/com/android/settings/language/PointerSpeedControllerTest.java
index 9a3fe55..a917a6d 100644
--- a/tests/robotests/src/com/android/settings/language/PointerSpeedControllerTest.java
+++ b/tests/robotests/src/com/android/settings/language/PointerSpeedControllerTest.java
@@ -23,7 +23,6 @@
 import android.content.Context;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.MockitoAnnotations;
@@ -34,25 +33,24 @@
 @RunWith(RobolectricTestRunner.class)
 public class PointerSpeedControllerTest {
 
-    private Context mContext;
-    private PointerSpeedController mController;
+  private Context mContext;
+  private PointerSpeedController mController;
 
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = spy(RuntimeEnvironment.application.getApplicationContext());
-        mController = new PointerSpeedController(mContext);
-    }
+  @Before
+  public void setUp() {
+    MockitoAnnotations.initMocks(this);
+    mContext = spy(RuntimeEnvironment.application.getApplicationContext());
+    mController = new PointerSpeedController(mContext);
+  }
 
-    @Test
-    public void testDeviceAdministrators_byDefault_shouldBeShown() {
-        assertThat(mController.isAvailable()).isTrue();
-    }
+  @Test
+  public void testDeviceAdministrators_byDefault_shouldBeShown() {
+    assertThat(mController.isAvailable()).isTrue();
+  }
 
-    @Ignore
-    @Test
-    @Config(qualifiers = "mcc999")
-    public void testDeviceAdministrators_ifDisabled_shouldNotBeShown() {
-        assertThat(mController.isAvailable()).isFalse();
-    }
+  @Test
+  @Config(qualifiers = "mcc999")
+  public void testDeviceAdministrators_ifDisabled_shouldNotBeShown() {
+    assertThat(mController.isAvailable()).isFalse();
+  }
 }
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/settings/localepicker/LocaleDialogFragmentTest.java b/tests/robotests/src/com/android/settings/localepicker/LocaleDialogFragmentTest.java
index bb22012..c8637c8 100644
--- a/tests/robotests/src/com/android/settings/localepicker/LocaleDialogFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/localepicker/LocaleDialogFragmentTest.java
@@ -36,7 +36,6 @@
 
 import com.android.internal.app.LocaleStore;
 import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
-import com.android.settings.utils.ActivityControllerWrapper;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -65,8 +64,7 @@
     public void setUp() throws Exception {
         MockitoAnnotations.initMocks(this);
 
-        mActivity = (FragmentActivity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(FragmentActivity.class)).get();
+        mActivity = Robolectric.setupActivity(FragmentActivity.class);
         mDialogFragment = LocaleDialogFragment.newInstance();
         LocaleStore.LocaleInfo localeInfo = LocaleStore.getLocaleInfo(Locale.ENGLISH);
         Bundle args = new Bundle();
diff --git a/tests/robotests/src/com/android/settings/location/LocationInjectedServicesPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/location/LocationInjectedServicesPreferenceControllerTest.java
index 49caa70..bed3346 100644
--- a/tests/robotests/src/com/android/settings/location/LocationInjectedServicesPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/location/LocationInjectedServicesPreferenceControllerTest.java
@@ -44,7 +44,6 @@
 import com.android.settingslib.core.lifecycle.Lifecycle;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Answers;
@@ -115,7 +114,6 @@
         verify(mContext).unregisterReceiver(mController.mInjectedSettingsReceiver);
     }
 
-    @Ignore
     @Test
     public void workProfileDisallowShareLocationOn_getParentUserLocationServicesOnly() {
         final int fakeWorkProfileId = 123;
@@ -168,7 +166,6 @@
         verify(mSettingsInjector).reloadStatusMessages();
     }
 
-    @Ignore
     @Test
     public void withUserRestriction_shouldDisableLocationAccuracy() {
         final List<Preference> preferences = new ArrayList<>();
diff --git a/tests/robotests/src/com/android/settings/location/LocationServicesPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/location/LocationServicesPreferenceControllerTest.java
index dacb7cf..f5868c2 100644
--- a/tests/robotests/src/com/android/settings/location/LocationServicesPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/location/LocationServicesPreferenceControllerTest.java
@@ -23,7 +23,6 @@
 import android.content.Context;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -50,7 +49,6 @@
         assertThat(mController.isAvailable()).isTrue();
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void testLocationScanning_ifDisabled_shouldNotBeShown() {
diff --git a/tests/robotests/src/com/android/settings/network/MobileNetworkSummaryControllerTest.java b/tests/robotests/src/com/android/settings/network/MobileNetworkSummaryControllerTest.java
index 8d6d2d9..bf866b2 100644
--- a/tests/robotests/src/com/android/settings/network/MobileNetworkSummaryControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/MobileNetworkSummaryControllerTest.java
@@ -44,6 +44,8 @@
 import androidx.preference.PreferenceScreen;
 
 import com.android.settings.Settings.MobileNetworkActivity;
+import com.android.settings.network.helper.SubscriptionAnnotation;
+import com.android.settings.network.helper.SubscriptionGrouping;
 import com.android.settings.widget.AddPreference;
 import com.android.settingslib.RestrictedLockUtils;
 import com.android.settingslib.core.lifecycle.Lifecycle;
diff --git a/tests/robotests/src/com/android/settings/network/PrivateDnsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/PrivateDnsPreferenceControllerTest.java
index b5c8218..775ac47 100644
--- a/tests/robotests/src/com/android/settings/network/PrivateDnsPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/PrivateDnsPreferenceControllerTest.java
@@ -67,7 +67,6 @@
 import com.android.settingslib.core.lifecycle.Lifecycle;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.ArgumentCaptor;
@@ -174,7 +173,6 @@
         assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void getAvailabilityStatus_unsupportedWhenSet() {
@@ -296,7 +294,6 @@
                 com.android.settingslib.R.string.private_dns_mode_opportunistic));
     }
 
-    @Ignore
     @Test
     public void isEnabled_canBeDisabledByAdmin() {
         final int userId = UserHandle.myUserId();
diff --git a/tests/robotests/src/com/android/settings/notification/ChargingSoundPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/ChargingSoundPreferenceControllerTest.java
index 1c864c9..0131bc5 100644
--- a/tests/robotests/src/com/android/settings/notification/ChargingSoundPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/ChargingSoundPreferenceControllerTest.java
@@ -31,7 +31,6 @@
 import androidx.preference.SwitchPreference;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -76,7 +75,6 @@
         assertThat(mController.isAvailable()).isTrue();
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void isAvailable_whenNotVisible_isFalse() {
diff --git a/tests/robotests/src/com/android/settings/notification/MediaVolumePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/MediaVolumePreferenceControllerTest.java
index 982316a..ed93473 100644
--- a/tests/robotests/src/com/android/settings/notification/MediaVolumePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/MediaVolumePreferenceControllerTest.java
@@ -42,7 +42,6 @@
 import com.android.settingslib.media.MediaOutputConstants;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -89,7 +88,6 @@
         assertThat(mController.isAvailable()).isTrue();
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void isAvailable_whenNotVisible_isFalse() {
diff --git a/tests/robotests/src/com/android/settings/notification/NotificationRingtonePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/NotificationRingtonePreferenceControllerTest.java
index 783a36b..1aecad5 100644
--- a/tests/robotests/src/com/android/settings/notification/NotificationRingtonePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/NotificationRingtonePreferenceControllerTest.java
@@ -21,7 +21,6 @@
 import android.media.RingtoneManager;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.MockitoAnnotations;
@@ -45,7 +44,6 @@
         assertThat(mController.isAvailable()).isTrue();
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void isAvailable_whenNotVisible_isFalse() {
diff --git a/tests/robotests/src/com/android/settings/notification/RedactionInterstitialTest.java b/tests/robotests/src/com/android/settings/notification/RedactionInterstitialTest.java
index 2668e6d..9d475b8 100644
--- a/tests/robotests/src/com/android/settings/notification/RedactionInterstitialTest.java
+++ b/tests/robotests/src/com/android/settings/notification/RedactionInterstitialTest.java
@@ -27,7 +27,6 @@
 
 import org.junit.After;
 import org.junit.Assert;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.robolectric.RobolectricTestRunner;
@@ -36,7 +35,6 @@
 import org.robolectric.shadow.api.Shadow;
 import org.robolectric.shadows.ShadowUserManager;
 
-@Ignore
 @RunWith(RobolectricTestRunner.class)
 @Config(shadows = {
         ShadowUtils.class,
diff --git a/tests/robotests/src/com/android/settings/notification/ScreenLockSoundPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/ScreenLockSoundPreferenceControllerTest.java
index e0b7e14..0a1ce1f 100644
--- a/tests/robotests/src/com/android/settings/notification/ScreenLockSoundPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/ScreenLockSoundPreferenceControllerTest.java
@@ -31,7 +31,6 @@
 import androidx.preference.SwitchPreference;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -76,7 +75,6 @@
         assertThat(mController.isAvailable()).isTrue();
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void isAvailable_whenNotVisible_isFalse() {
diff --git a/tests/robotests/src/com/android/settings/notification/TouchSoundPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/TouchSoundPreferenceControllerTest.java
index 53359cb..09fdada 100644
--- a/tests/robotests/src/com/android/settings/notification/TouchSoundPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/TouchSoundPreferenceControllerTest.java
@@ -32,7 +32,6 @@
 import androidx.preference.SwitchPreference;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -80,7 +79,6 @@
         assertThat(mController.isAvailable()).isTrue();
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void isAvailable_whenNotVisible_isFalse() {
diff --git a/tests/robotests/src/com/android/settings/password/ChooseLockPatternTest.java b/tests/robotests/src/com/android/settings/password/ChooseLockPatternTest.java
index 301a6db..7715c62 100644
--- a/tests/robotests/src/com/android/settings/password/ChooseLockPatternTest.java
+++ b/tests/robotests/src/com/android/settings/password/ChooseLockPatternTest.java
@@ -39,14 +39,12 @@
 
 import com.google.android.setupdesign.GlifLayout;
 
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.robolectric.Robolectric;
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 
-@Ignore
 @RunWith(RobolectricTestRunner.class)
 @Config(shadows = ShadowUtils.class)
 public class ChooseLockPatternTest {
diff --git a/tests/robotests/src/com/android/settings/password/ChooseLockSettingsHelperTest.java b/tests/robotests/src/com/android/settings/password/ChooseLockSettingsHelperTest.java
index de55435..fcab797 100644
--- a/tests/robotests/src/com/android/settings/password/ChooseLockSettingsHelperTest.java
+++ b/tests/robotests/src/com/android/settings/password/ChooseLockSettingsHelperTest.java
@@ -24,7 +24,6 @@
 import com.android.internal.widget.LockPatternUtils;
 import com.android.settings.testutils.shadow.ShadowUserManager;
 import com.android.settings.testutils.shadow.ShadowUtils;
-import com.android.settings.utils.ActivityControllerWrapper;
 
 import com.google.android.setupcompat.util.WizardManagerHelper;
 import com.google.android.setupdesign.util.ThemeHelper;
@@ -44,8 +43,7 @@
 
     @Test
     public void testLaunchConfirmationActivityWithExternal() {
-        final Activity activity  = (Activity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(Activity.class)).get();
+        final Activity activity = Robolectric.setupActivity(Activity.class);
 
         ChooseLockSettingsHelper.Builder builder = new ChooseLockSettingsHelper.Builder(activity);
         builder.setRequestCode(100)
@@ -130,8 +128,7 @@
 
     @Test
     public void launchConfirmPattern_ForceVerify_shouldLaunchInternalActivity() {
-        final Activity activity  = (Activity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(Activity.class)).get();
+        final Activity activity = Robolectric.setupActivity(Activity.class);
 
         ChooseLockSettingsHelper.Builder builder = new ChooseLockSettingsHelper.Builder(activity);
         builder.setRequestCode(100)
@@ -151,8 +148,7 @@
 
     @Test
     public void launchConfirmPassword_ForceVerify_shouldLaunchInternalActivity() {
-        final Activity activity  = (Activity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(Activity.class)).get();
+        final Activity activity = Robolectric.setupActivity(Activity.class);
 
         ChooseLockSettingsHelper.Builder builder = new ChooseLockSettingsHelper.Builder(activity);
         builder.setRequestCode(100)
@@ -172,8 +168,7 @@
 
     @Test
     public void launchConfirmPassword_remoteValidation_passwordLockType() throws Exception {
-        final Activity activity  = (Activity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(Activity.class)).get();
+        Activity activity = Robolectric.setupActivity(Activity.class);
         ShadowActivity shadowActivity = Shadows.shadowOf(activity);
         RemoteLockscreenValidationSession request = createRemoteLockscreenValidationSession(
                 KeyguardManager.PASSWORD, VALID_REMAINING_ATTEMPTS);
@@ -202,9 +197,7 @@
 
     @Test
     public void launchConfirmPassword_remoteValidation_pinLockType() throws Exception {
-        Activity activity  = (Activity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(Activity.class)).get();
-
+        Activity activity = Robolectric.setupActivity(Activity.class);
         ShadowActivity shadowActivity = Shadows.shadowOf(activity);
         RemoteLockscreenValidationSession request = createRemoteLockscreenValidationSession(
                 KeyguardManager.PIN, VALID_REMAINING_ATTEMPTS);
@@ -233,8 +226,7 @@
 
     @Test
     public void launchConfirmPattern_remoteValidation_patternLockType() throws Exception {
-        Activity activity  = (Activity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(Activity.class)).get();
+        Activity activity = Robolectric.setupActivity(Activity.class);
         ShadowActivity shadowActivity = Shadows.shadowOf(activity);
         RemoteLockscreenValidationSession request = createRemoteLockscreenValidationSession(
                 KeyguardManager.PATTERN, VALID_REMAINING_ATTEMPTS);
diff --git a/tests/robotests/src/com/android/settings/password/ConfirmLockPasswordTest.java b/tests/robotests/src/com/android/settings/password/ConfirmLockPasswordTest.java
index 2be8aba..d26c33b 100644
--- a/tests/robotests/src/com/android/settings/password/ConfirmLockPasswordTest.java
+++ b/tests/robotests/src/com/android/settings/password/ConfirmLockPasswordTest.java
@@ -62,7 +62,6 @@
 
 import org.junit.After;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.ArgumentCaptor;
@@ -162,7 +161,6 @@
                 InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD);
     }
 
-    @Ignore
     @Test
     public void handleNext_normalFlow_doesNotAttemptRemoteLockscreenValidation() {
         ConfirmLockPassword activity = Robolectric.buildActivity(
@@ -177,7 +175,6 @@
         verifyNoInteractions(mRemoteLockscreenValidationClient);
     }
 
-    @Ignore
     @Test
     public void handleNext_remoteValidation_correctGuess_checkboxChecked() throws Exception {
         ConfirmDeviceCredentialBaseActivity activity =
diff --git a/tests/robotests/src/com/android/settings/password/ConfirmLockPatternTest.java b/tests/robotests/src/com/android/settings/password/ConfirmLockPatternTest.java
index 68bee68..2ed7988 100644
--- a/tests/robotests/src/com/android/settings/password/ConfirmLockPatternTest.java
+++ b/tests/robotests/src/com/android/settings/password/ConfirmLockPatternTest.java
@@ -55,11 +55,9 @@
 import com.android.settings.testutils.shadow.ShadowLockPatternUtils;
 import com.android.settings.testutils.shadow.ShadowUserManager;
 import com.android.settings.testutils.shadow.ShadowUtils;
-import com.android.settings.utils.ActivityControllerWrapper;
 
 import org.junit.After;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.ArgumentCaptor;
@@ -145,9 +143,8 @@
 
     @Test
     public void onPatternDetected_normalFlow_doesNotAttemptRemoteLockscreenValidation() {
-        ConfirmLockPattern activity  = (ConfirmLockPattern) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(ConfirmLockPattern.class, new Intent())).get();
-
+        ConfirmLockPattern activity = Robolectric.buildActivity(
+                ConfirmLockPattern.class, new Intent()).setup().get();
         ConfirmDeviceCredentialBaseFragment fragment =
                 getConfirmDeviceCredentialBaseFragment(activity);
         LockPatternView lockPatternView = activity.findViewById(R.id.lockPattern);
@@ -158,7 +155,6 @@
         verifyNoInteractions(mRemoteLockscreenValidationClient);
     }
 
-    @Ignore
     @Test
     public void onPatternDetected_remoteValidation_guessValid_checkboxChecked() throws Exception {
         ConfirmDeviceCredentialBaseActivity activity =
diff --git a/tests/robotests/src/com/android/settings/password/SetupChooseLockGenericTest.java b/tests/robotests/src/com/android/settings/password/SetupChooseLockGenericTest.java
index 0eb365b..c23ce9b 100644
--- a/tests/robotests/src/com/android/settings/password/SetupChooseLockGenericTest.java
+++ b/tests/robotests/src/com/android/settings/password/SetupChooseLockGenericTest.java
@@ -44,7 +44,6 @@
 import com.android.settings.testutils.shadow.ShadowPasswordUtils;
 import com.android.settings.testutils.shadow.ShadowUserManager;
 import com.android.settings.testutils.shadow.ShadowUtils;
-import com.android.settings.utils.ActivityControllerWrapper;
 
 import com.google.android.setupdesign.GlifPreferenceLayout;
 
@@ -58,6 +57,7 @@
 import org.mockito.junit.MockitoRule;
 import org.robolectric.Robolectric;
 import org.robolectric.RobolectricTestRunner;
+import org.robolectric.android.controller.ActivityController;
 import org.robolectric.annotation.Config;
 
 import java.util.List;
@@ -202,8 +202,8 @@
         intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_FOR_FACE, forFace);
         intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_FOR_BIOMETRICS, forBiometric);
 
-        SetupChooseLockGeneric activity = (SetupChooseLockGeneric) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(SetupChooseLockGeneric.class, intent)).get();
+        SetupChooseLockGeneric activity = ActivityController.of(
+                new SetupChooseLockGeneric(), intent).setup().get();
 
         List<Fragment> fragments = activity.getSupportFragmentManager().getFragments();
         assertThat(fragments).isNotNull();
diff --git a/tests/robotests/src/com/android/settings/password/SetupChooseLockPasswordTest.java b/tests/robotests/src/com/android/settings/password/SetupChooseLockPasswordTest.java
index bff6991..97a326f 100644
--- a/tests/robotests/src/com/android/settings/password/SetupChooseLockPasswordTest.java
+++ b/tests/robotests/src/com/android/settings/password/SetupChooseLockPasswordTest.java
@@ -40,7 +40,6 @@
 import com.android.settings.testutils.shadow.ShadowDevicePolicyManager;
 import com.android.settings.testutils.shadow.ShadowLockPatternUtils;
 import com.android.settings.testutils.shadow.ShadowUtils;
-import com.android.settings.utils.ActivityControllerWrapper;
 import com.android.settings.widget.ScrollToParentEditText;
 
 import com.google.android.setupcompat.PartnerCustomizationLayout;
@@ -50,7 +49,6 @@
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.Robolectric;
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.Shadows;
 import org.robolectric.android.controller.ActivityController;
@@ -96,8 +94,7 @@
                         application,
                         new IntentBuilder(application).build());
 
-        ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(SetupChooseLockPassword.class, intent)).get();
+        ActivityController.of(new SetupChooseLockPassword(), intent).setup().get();
     }
 
     @Test
@@ -218,8 +215,7 @@
                         application,
                         new IntentBuilder(application).build());
         intent.putExtra(ChooseLockGenericFragment.EXTRA_SHOW_OPTIONS_BUTTON, true);
-        return (SetupChooseLockPassword) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(SetupChooseLockPassword.class, intent)).get();
+        return ActivityController.of(new SetupChooseLockPassword(), intent).setup().get();
     }
 
     @Implements(ChooseLockGenericController.class)
diff --git a/tests/robotests/src/com/android/settings/password/SetupChooseLockPatternTest.java b/tests/robotests/src/com/android/settings/password/SetupChooseLockPatternTest.java
index d353a22..648c42f 100644
--- a/tests/robotests/src/com/android/settings/password/SetupChooseLockPatternTest.java
+++ b/tests/robotests/src/com/android/settings/password/SetupChooseLockPatternTest.java
@@ -45,19 +45,17 @@
 import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
 import com.android.settings.testutils.shadow.ShadowLockPatternUtils;
 import com.android.settings.testutils.shadow.ShadowUtils;
-import com.android.settings.utils.ActivityControllerWrapper;
 
 import com.google.android.setupcompat.PartnerCustomizationLayout;
 import com.google.android.setupcompat.template.FooterBarMixin;
 import com.google.android.setupcompat.template.FooterButton;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.Robolectric;
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.Shadows;
+import org.robolectric.android.controller.ActivityController;
 import org.robolectric.annotation.Config;
 import org.robolectric.annotation.LooperMode;
 import org.robolectric.shadows.ShadowPackageManager;
@@ -86,9 +84,7 @@
                         new IntentBuilder(application)
                                 .setUserId(UserHandle.myUserId())
                                 .build());
-
-        mActivity = (SetupChooseLockPattern) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(SetupChooseLockPattern.class, intent)).get();
+        mActivity = ActivityController.of(new SetupChooseLockPattern(), intent).setup().get();
     }
 
     @Test
@@ -102,7 +98,6 @@
         assertThat(componentEnabled).isEqualTo(PackageManager.COMPONENT_ENABLED_STATE_ENABLED);
     }
 
-    @Ignore
     @Test
     public void optionsButton_whenPatternSelected_shouldBeVisible() {
         final Button button = mActivity.findViewById(R.id.screen_lock_options);
@@ -128,14 +123,12 @@
         assertWithMessage("List items shown").that(count).isEqualTo(3);
     }
 
-    @Ignore
     @Config(qualifiers = "sw400dp")
     @Test
     public void sw400dp_shouldShowScreenLockOptions() {
         verifyScreenLockOptionsShown();
     }
 
-    @Ignore
     @Config(qualifiers = "sw400dp-land")
     @Test
     public void sw400dpLandscape_shouldShowScreenLockOptions() {
@@ -160,7 +153,6 @@
         verifyScreenLockOptionsHidden();
     }
 
-    @Ignore
     @Test
     public void skipButton_shouldBeVisible_duringNonFingerprintFlow() {
         final PartnerCustomizationLayout layout = mActivity.findViewById(R.id.setup_wizard_layout);
diff --git a/tests/robotests/src/com/android/settings/password/SetupSkipDialogTest.java b/tests/robotests/src/com/android/settings/password/SetupSkipDialogTest.java
index 2cc256b..53a80dc 100644
--- a/tests/robotests/src/com/android/settings/password/SetupSkipDialogTest.java
+++ b/tests/robotests/src/com/android/settings/password/SetupSkipDialogTest.java
@@ -35,7 +35,6 @@
 import com.android.settings.biometrics.BiometricUtils;
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settings.testutils.shadow.ShadowUtils;
-import com.android.settings.utils.ActivityControllerWrapper;
 
 import org.junit.Before;
 import org.junit.Rule;
@@ -71,8 +70,7 @@
         ShadowUtils.setFingerprintManager(mFingerprintManager);
         ShadowUtils.setFaceManager(mFaceManager);
         mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
-        mActivity = (FragmentActivity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(FragmentActivity.class)).get();
+        mActivity = Robolectric.setupActivity(FragmentActivity.class);
 
         when(mFakeFeatureFactory.mFaceFeatureProvider.isSetupWizardSupported(any())).thenReturn(
                 true);
diff --git a/tests/robotests/src/com/android/settings/password/TestUtils.java b/tests/robotests/src/com/android/settings/password/TestUtils.java
index fa6a11d..ef08f05 100644
--- a/tests/robotests/src/com/android/settings/password/TestUtils.java
+++ b/tests/robotests/src/com/android/settings/password/TestUtils.java
@@ -27,7 +27,6 @@
 
 import com.android.security.SecureBox;
 import com.android.settings.R;
-import com.android.settings.utils.ActivityControllerWrapper;
 
 import org.robolectric.Robolectric;
 
@@ -96,11 +95,7 @@
 
     public static ConfirmDeviceCredentialBaseActivity buildConfirmDeviceCredentialBaseActivity(
             Class<? extends ConfirmDeviceCredentialBaseActivity> impl, Intent intent) {
-
-        return (ConfirmDeviceCredentialBaseActivity) ActivityControllerWrapper.setup(
-                    Robolectric.buildActivity(impl, intent)).get();
-
-        //return Robolectric.buildActivity(impl, intent).setup().get();
+        return Robolectric.buildActivity(impl, intent).setup().get();
     }
 
     public static ConfirmDeviceCredentialBaseFragment getConfirmDeviceCredentialBaseFragment(
diff --git a/tests/robotests/src/com/android/settings/search/BaseSearchIndexProviderTest.java b/tests/robotests/src/com/android/settings/search/BaseSearchIndexProviderTest.java
index 8b8fad0..09b1ea9 100644
--- a/tests/robotests/src/com/android/settings/search/BaseSearchIndexProviderTest.java
+++ b/tests/robotests/src/com/android/settings/search/BaseSearchIndexProviderTest.java
@@ -31,7 +31,6 @@
 import com.android.settingslib.search.SearchIndexableRaw;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.MockitoAnnotations;
@@ -96,7 +95,6 @@
         assertThat(mIndexProvider.getNonIndexableKeys(mContext)).isEqualTo(Collections.EMPTY_LIST);
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void getAllPreferenceControllers_shouldCreateControllerFromCodeAndXml() {
@@ -180,7 +178,6 @@
         assertThat(nonIndexableKeys).contains("status_header");
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void getNonIndexableKeys_hasSearchableAttributeInXml_shouldSuppressUnsearchable() {
diff --git a/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java
index 0aa49eb..f349600 100644
--- a/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java
+++ b/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java
@@ -33,7 +33,6 @@
 import com.android.settings.R;
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settings.testutils.shadow.ShadowUtils;
-import com.android.settings.utils.ActivityControllerWrapper;
 
 import org.junit.Before;
 import org.junit.Ignore;
@@ -55,11 +54,7 @@
     @Before
     public void setUp() {
         FakeFeatureFactory.setupForTest();
-        mActivity = (FragmentActivity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(FragmentActivity.class)).get();
-
-        mActivity = (FragmentActivity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(FragmentActivity.class)).get();
+        mActivity = Robolectric.setupActivity(FragmentActivity.class);
         mProvider = new SearchFeatureProviderImpl();
         mPackageManager = Shadows.shadowOf(mActivity.getPackageManager());
         Settings.Global.putInt(mActivity.getContentResolver(),
diff --git a/tests/robotests/src/com/android/settings/search/SettingsSearchIndexablesProviderTest.java b/tests/robotests/src/com/android/settings/search/SettingsSearchIndexablesProviderTest.java
index c70411c..21b00a3 100644
--- a/tests/robotests/src/com/android/settings/search/SettingsSearchIndexablesProviderTest.java
+++ b/tests/robotests/src/com/android/settings/search/SettingsSearchIndexablesProviderTest.java
@@ -30,7 +30,6 @@
 
 import org.junit.After;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.robolectric.RobolectricTestRunner;
@@ -131,7 +130,6 @@
         assertThat(cursor.getString(6)).isNull();
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void testNonIndexablesColumnFetched() {
diff --git a/tests/robotests/src/com/android/settings/security/EncryptionStatusPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/security/EncryptionStatusPreferenceControllerTest.java
index 67798aa..410198b 100644
--- a/tests/robotests/src/com/android/settings/security/EncryptionStatusPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/security/EncryptionStatusPreferenceControllerTest.java
@@ -32,7 +32,6 @@
 import com.android.settings.testutils.shadow.ShadowUserManager;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.robolectric.RobolectricTestRunner;
@@ -57,7 +56,6 @@
         mPreference = new Preference(mContext);
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void isAvailable_notVisible_false() {
diff --git a/tests/robotests/src/com/android/settings/security/MemtagPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/security/MemtagPreferenceControllerTest.java
index 521a939..e3fc3cc 100644
--- a/tests/robotests/src/com/android/settings/security/MemtagPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/security/MemtagPreferenceControllerTest.java
@@ -37,7 +37,6 @@
 import com.android.settingslib.testutils.shadow.ShadowInteractionJankMonitor;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -46,7 +45,6 @@
 import org.robolectric.annotation.Config;
 import org.robolectric.shadows.ShadowSystemProperties;
 
-@Ignore
 @RunWith(RobolectricTestRunner.class)
 @Config(
         shadows = {
diff --git a/tests/robotests/src/com/android/settings/security/ScreenPinningPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/security/ScreenPinningPreferenceControllerTest.java
index 546545c..4f694bc 100644
--- a/tests/robotests/src/com/android/settings/security/ScreenPinningPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/security/ScreenPinningPreferenceControllerTest.java
@@ -28,7 +28,6 @@
 
 import org.junit.After;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.MockitoAnnotations;
@@ -63,7 +62,6 @@
         assertThat(mController.isAvailable()).isTrue();
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void isAvailable_whenNotVisible_isFalse() {
diff --git a/tests/robotests/src/com/android/settings/security/ShowPasswordPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/security/ShowPasswordPreferenceControllerTest.java
index 35e1c9b..206dee1 100644
--- a/tests/robotests/src/com/android/settings/security/ShowPasswordPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/security/ShowPasswordPreferenceControllerTest.java
@@ -28,7 +28,6 @@
 import androidx.preference.PreferenceScreen;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -62,7 +61,6 @@
         assertThat(mController.isAvailable()).isTrue();
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void isAvailable_whenNotVisible_isFalse() {
diff --git a/tests/robotests/src/com/android/settings/security/screenlock/PinPrivacyPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/security/screenlock/PinPrivacyPreferenceControllerTest.java
index 73b4b9b..171fb44 100644
--- a/tests/robotests/src/com/android/settings/security/screenlock/PinPrivacyPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/security/screenlock/PinPrivacyPreferenceControllerTest.java
@@ -32,7 +32,6 @@
 import com.android.internal.widget.LockPatternUtils;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -67,7 +66,6 @@
         assertThat(mController.isAvailable()).isTrue();
     }
 
-    @Ignore
     @Test
     public void isAvailable_lockSetToPinOrPw_shouldReturnTrue() {
         when(mLockPatternUtils.getCredentialTypeForUser(TEST_USER_ID)).thenReturn(
diff --git a/tests/robotests/src/com/android/settings/security/trustagent/ManageTrustAgentsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/security/trustagent/ManageTrustAgentsPreferenceControllerTest.java
index 43f5cfc..33a62f4 100644
--- a/tests/robotests/src/com/android/settings/security/trustagent/ManageTrustAgentsPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/security/trustagent/ManageTrustAgentsPreferenceControllerTest.java
@@ -32,7 +32,6 @@
 import com.android.settingslib.utils.StringUtil;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -76,7 +75,6 @@
         assertThat(mController.isAvailable()).isTrue();
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void isAvailable_whenNotVisible_isFalse() {
diff --git a/tests/robotests/src/com/android/settings/security/trustagent/TrustAgentListPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/security/trustagent/TrustAgentListPreferenceControllerTest.java
index b6b9788..0463e00 100644
--- a/tests/robotests/src/com/android/settings/security/trustagent/TrustAgentListPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/security/trustagent/TrustAgentListPreferenceControllerTest.java
@@ -45,7 +45,6 @@
 import com.android.settingslib.search.SearchIndexableRaw;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -102,7 +101,6 @@
         assertThat(mController).isInstanceOf(PreferenceControllerMixin.class);
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void isAvailable_whenNotVisible_isFalse() {
@@ -152,7 +150,6 @@
         verify(mCategory, atLeastOnce()).addPreference(any(Preference.class));
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void onResume_ifNotAvailable_shouldNotAddNewAgents() {
diff --git a/tests/robotests/src/com/android/settings/slices/SettingsSliceProviderTest.java b/tests/robotests/src/com/android/settings/slices/SettingsSliceProviderTest.java
index 4903a28..57f4e17 100644
--- a/tests/robotests/src/com/android/settings/slices/SettingsSliceProviderTest.java
+++ b/tests/robotests/src/com/android/settings/slices/SettingsSliceProviderTest.java
@@ -30,6 +30,7 @@
 import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
@@ -63,7 +64,6 @@
 
 import org.junit.After;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -636,7 +636,6 @@
         verify(mManager, never()).grantSlicePermission(anyString(), any(Uri.class));
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void grantAllowlistedPackagePermissions_hasPackageAllowlist_shouldGrant() {
@@ -664,7 +663,6 @@
         assertThat(mProvider.isPrivateSlicesNeeded(uri)).isFalse();
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void isPrivateSlicesNeeded_correctUriWithPermissionAndIsSI_returnTrue() {
diff --git a/tests/robotests/src/com/android/settings/slices/SliceDataConverterTest.java b/tests/robotests/src/com/android/settings/slices/SliceDataConverterTest.java
index ec828a8..69f1886 100644
--- a/tests/robotests/src/com/android/settings/slices/SliceDataConverterTest.java
+++ b/tests/robotests/src/com/android/settings/slices/SliceDataConverterTest.java
@@ -41,7 +41,6 @@
 
 import org.junit.After;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.robolectric.RobolectricTestRunner;
@@ -89,7 +88,6 @@
         mFakeFeatureFactory.searchFeatureProvider = mock(SearchFeatureProvider.class);
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void testFakeProvider_convertsFakeData() {
diff --git a/tests/robotests/src/com/android/settings/support/SupportPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/support/SupportPreferenceControllerTest.java
index f095cc8..735dd34 100644
--- a/tests/robotests/src/com/android/settings/support/SupportPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/support/SupportPreferenceControllerTest.java
@@ -28,7 +28,6 @@
 import androidx.preference.Preference;
 
 import com.android.settings.testutils.FakeFeatureFactory;
-import com.android.settings.utils.ActivityControllerWrapper;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -47,8 +46,7 @@
 
     @Before
     public void setUp() {
-        mActivity = (Activity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(Activity.class)).get();
+        mActivity = Robolectric.setupActivity(Activity.class);
         mFeatureFactory = FakeFeatureFactory.setupForTest();
         mPreference = new Preference(mActivity);
         mPreference.setKey("test_key");
diff --git a/tests/robotests/src/com/android/settings/survey/SurveyMixinTest.java b/tests/robotests/src/com/android/settings/survey/SurveyMixinTest.java
index 0fc3ca1..8f43268 100644
--- a/tests/robotests/src/com/android/settings/survey/SurveyMixinTest.java
+++ b/tests/robotests/src/com/android/settings/survey/SurveyMixinTest.java
@@ -11,7 +11,6 @@
 import com.android.settings.core.InstrumentedPreferenceFragment;
 import com.android.settings.overlay.SurveyFeatureProvider;
 import com.android.settings.testutils.FakeFeatureFactory;
-import com.android.settings.utils.ActivityControllerWrapper;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -43,8 +42,7 @@
     @Test
     public void onResume_noActionIfActivityDoesNotExist() {
         // Pretend we are an activity that is starting up
-        FragmentActivity temp  = (FragmentActivity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(FragmentActivity.class)).get();
+        FragmentActivity temp = Robolectric.setupActivity(FragmentActivity.class);
         when(mFragment.getActivity()).thenReturn(null);
         SurveyMixin mixin = new SurveyMixin(mFragment, FAKE_KEY);
         mixin.onResume();
diff --git a/tests/robotests/src/com/android/settings/system/AdditionalSystemUpdatePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/system/AdditionalSystemUpdatePreferenceControllerTest.java
index a853b9e..0abfc20 100644
--- a/tests/robotests/src/com/android/settings/system/AdditionalSystemUpdatePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/system/AdditionalSystemUpdatePreferenceControllerTest.java
@@ -20,7 +20,6 @@
 import android.content.Context;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.MockitoAnnotations;
@@ -47,7 +46,6 @@
         assertThat(mController.isAvailable()).isFalse();
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void displayPrefs_ifAvailable_shouldDisplay() {
diff --git a/tests/robotests/src/com/android/settings/system/ResetPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/system/ResetPreferenceControllerTest.java
index 7ceac23..dd95d29 100644
--- a/tests/robotests/src/com/android/settings/system/ResetPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/system/ResetPreferenceControllerTest.java
@@ -20,7 +20,6 @@
 import android.content.Context;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.robolectric.RobolectricTestRunner;
@@ -46,7 +45,6 @@
         assertThat(mController.isAvailable()).isTrue();
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void isAvailable_ifNotVisible_false() {
diff --git a/tests/robotests/src/com/android/settings/system/SystemUpdatePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/system/SystemUpdatePreferenceControllerTest.java
index 544ba96..61aa294 100644
--- a/tests/robotests/src/com/android/settings/system/SystemUpdatePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/system/SystemUpdatePreferenceControllerTest.java
@@ -38,7 +38,6 @@
 
 import org.junit.After;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -112,7 +111,6 @@
         assertThat(mPreference.isVisible()).isFalse();
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void displayPrefs_ifAdminUser_butNotVisible_shouldNotDisplay() {
diff --git a/tests/robotests/src/com/android/settings/theme/ContrastPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/theme/ContrastPreferenceControllerTest.java
index 8f78df9..dbd3372 100644
--- a/tests/robotests/src/com/android/settings/theme/ContrastPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/theme/ContrastPreferenceControllerTest.java
@@ -38,7 +38,6 @@
 import androidx.test.core.app.ApplicationProvider;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -74,7 +73,6 @@
         assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
     }
 
-    @Ignore
     @Test
     public void testHandlePreferenceTreeClick() {
         Preference preference = new Preference(mContext);
diff --git a/tests/robotests/src/com/android/settings/users/MultiUserSwitchBarControllerTest.java b/tests/robotests/src/com/android/settings/users/MultiUserSwitchBarControllerTest.java
index 89319c4..718e01b 100644
--- a/tests/robotests/src/com/android/settings/users/MultiUserSwitchBarControllerTest.java
+++ b/tests/robotests/src/com/android/settings/users/MultiUserSwitchBarControllerTest.java
@@ -65,7 +65,7 @@
                 UserManager.DISALLOW_USER_SWITCH, true);
 
         final MultiUserSwitchBarController controller = new MultiUserSwitchBarController(mContext,
-                mSwitchBarController, true, null);
+                mSwitchBarController, null);
 
         verify(mSwitchBarController).setDisabledByAdmin(any());
     }
@@ -76,32 +76,8 @@
                 UserManager.DISALLOW_USER_SWITCH, false);
 
         final MultiUserSwitchBarController controller = new MultiUserSwitchBarController(mContext,
-                mSwitchBarController, true, null);
+                mSwitchBarController, null);
 
         verify(mSwitchBarController, never()).setDisabledByAdmin(any());
     }
-
-    @Test
-    public void onStart_allowUserSwitch_setDisabledAfterInitialization_shouldBeDisabled() {
-        mUserManager.setUserRestriction(UserHandle.of(UserHandle.myUserId()),
-                UserManager.DISALLOW_USER_SWITCH, false);
-
-        final MultiUserSwitchBarController controller = new MultiUserSwitchBarController(mContext,
-                mSwitchBarController, true, null);
-        verify(mSwitchBarController).setEnabled(true);
-        controller.setToggleEnabled(false);
-        verify(mSwitchBarController).setEnabled(false);
-    }
-
-    @Test
-    public void onStart_allowUserSwitch_setEnabledAfterInitialization_shouldBeEnabled() {
-        mUserManager.setUserRestriction(UserHandle.of(UserHandle.myUserId()),
-                UserManager.DISALLOW_USER_SWITCH, false);
-
-        final MultiUserSwitchBarController controller = new MultiUserSwitchBarController(mContext,
-                mSwitchBarController, false, null);
-        verify(mSwitchBarController).setEnabled(false);
-        controller.setToggleEnabled(true);
-        verify(mSwitchBarController).setEnabled(true);
-    }
 }
diff --git a/tests/robotests/src/com/android/settings/users/TimeoutToDockUserPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/users/TimeoutToDockUserPreferenceControllerTest.java
index 92bdc6d..3d8e893 100644
--- a/tests/robotests/src/com/android/settings/users/TimeoutToDockUserPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/users/TimeoutToDockUserPreferenceControllerTest.java
@@ -40,7 +40,6 @@
 
 import org.junit.After;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -127,7 +126,6 @@
                 BasePreferenceController.CONDITIONALLY_UNAVAILABLE);
     }
 
-    @Ignore
     @Test
     public void getAvailabilityStatus_isCurrentlyMainUser_returnDisabledForUser() {
         when(Utils.canCurrentUserDream(mContext)).thenReturn(true);
@@ -136,7 +134,6 @@
                 BasePreferenceController.DISABLED_FOR_USER);
     }
 
-    @Ignore
     @Test
     public void getAvailabilityStatus_featureAndMultiUserEnabledAndNonMainUser_returnAvailable() {
         when(Utils.canCurrentUserDream(mContext)).thenReturn(false);
diff --git a/tests/robotests/src/com/android/settings/users/UserDetailsSettingsTest.java b/tests/robotests/src/com/android/settings/users/UserDetailsSettingsTest.java
index fbe4a05..256e08b 100644
--- a/tests/robotests/src/com/android/settings/users/UserDetailsSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/users/UserDetailsSettingsTest.java
@@ -63,7 +63,6 @@
 
 import org.junit.After;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -662,7 +661,6 @@
         assertThat(result).isTrue();
     }
 
-    @Ignore
     @Test
     public void canDeleteUser_adminSelectsUser_hasRemoveRestriction_shouldReturnFalse() {
         setupSelectedUser();
diff --git a/tests/robotests/src/com/android/settings/users/UserSettingsTest.java b/tests/robotests/src/com/android/settings/users/UserSettingsTest.java
index 37af4b1..36eeac8 100644
--- a/tests/robotests/src/com/android/settings/users/UserSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/users/UserSettingsTest.java
@@ -73,7 +73,6 @@
 
 import org.junit.After;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.AdditionalMatchers;
@@ -262,7 +261,6 @@
                 eq(SettingsEnums.ACTION_USER_GUEST_EXIT_CONFIRMED));
     }
 
-    @Ignore
     @Test
     public void withDisallowRemoveUser_ShouldDisableRemoveUser() {
         // TODO(b/115781615): Tidy robolectric tests
diff --git a/tests/robotests/src/com/android/settings/utils/ActivityControllerWrapper.java b/tests/robotests/src/com/android/settings/utils/ActivityControllerWrapper.java
deleted file mode 100644
index 6ebbc65..0000000
--- a/tests/robotests/src/com/android/settings/utils/ActivityControllerWrapper.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2023 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.utils;
-
-import android.os.Bundle;
-
-import org.robolectric.android.controller.ActivityController;
-
-/*
- * b/275023433
- * This class is a workaround for Robolectric, in order to re-enable presubmit
- * We don't use ActivityController#visible() to avoid test crash
- */
-public class ActivityControllerWrapper {
-
-    private static final boolean ENABLE_WORKAROUND = true;
-
-
-    public static ActivityController setup(ActivityController controller) {
-        if (ENABLE_WORKAROUND) {
-            return controller.create().start().postCreate(null).resume();
-        } else {
-            return controller.setup();
-        }
-    }
-
-    public static ActivityController setup(ActivityController controller, Bundle savedState) {
-        return controller.create(savedState)
-                .start()
-                .restoreInstanceState(savedState)
-                .postCreate(savedState)
-                .resume();
-    }
-
-}
diff --git a/tests/robotests/src/com/android/settings/wallpaper/WallpaperSuggestionActivityTest.java b/tests/robotests/src/com/android/settings/wallpaper/WallpaperSuggestionActivityTest.java
index ed63cc0..6201bcb 100644
--- a/tests/robotests/src/com/android/settings/wallpaper/WallpaperSuggestionActivityTest.java
+++ b/tests/robotests/src/com/android/settings/wallpaper/WallpaperSuggestionActivityTest.java
@@ -27,8 +27,6 @@
 import android.content.Intent;
 import android.content.res.Resources;
 
-import com.android.settings.utils.ActivityControllerWrapper;
-
 import com.google.android.setupcompat.util.WizardManagerHelper;
 
 import org.junit.After;
@@ -121,13 +119,10 @@
 
     @Test
     public void addExtras_intentNotFromSetupWizard_extrasHasFocusWallpaper() {
-        WallpaperSuggestionActivity activity =
-                (WallpaperSuggestionActivity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(WallpaperSuggestionActivity.class,
-                        new Intent(Intent.ACTION_MAIN).setComponent(
+        WallpaperSuggestionActivity activity = Robolectric.buildActivity(
+                WallpaperSuggestionActivity.class, new Intent(Intent.ACTION_MAIN).setComponent(
                         new ComponentName(RuntimeEnvironment.application,
-                                PACKAGE_WALLPAPER_ACTIVITY)))).get();
-
+                                PACKAGE_WALLPAPER_ACTIVITY))).setup().get();
         Intent intent = Shadows.shadowOf(activity).getNextStartedActivity();
 
         assertThat(intent).isNotNull();
diff --git a/tests/robotests/src/com/android/settings/wallpaper/WallpaperTypePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wallpaper/WallpaperTypePreferenceControllerTest.java
index fc6df9c..8871cc8 100644
--- a/tests/robotests/src/com/android/settings/wallpaper/WallpaperTypePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/wallpaper/WallpaperTypePreferenceControllerTest.java
@@ -25,7 +25,6 @@
 import androidx.preference.Preference;
 
 import com.android.settings.core.BasePreferenceController;
-import com.android.settings.utils.ActivityControllerWrapper;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -45,8 +44,7 @@
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
-        mContext = (Activity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(Activity.class)).get();
+        mContext = Robolectric.setupActivity(Activity.class);
         mController = new WallpaperTypePreferenceController(mContext, "pref_key");
         mIntent = new Intent();
         mPreference = new Preference(mContext);
diff --git a/tests/robotests/src/com/android/settings/widget/EntityHeaderControllerTest.java b/tests/robotests/src/com/android/settings/widget/EntityHeaderControllerTest.java
index bc816fa..834f3d1 100644
--- a/tests/robotests/src/com/android/settings/widget/EntityHeaderControllerTest.java
+++ b/tests/robotests/src/com/android/settings/widget/EntityHeaderControllerTest.java
@@ -45,7 +45,6 @@
 import com.android.settingslib.widget.LayoutPreference;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Answers;
@@ -204,7 +203,6 @@
         verify(activity, never()).startActivity(any(Intent.class));
     }
 
-    @Ignore
     @Test
     public void bindButton_hasAppInfo_shouldAttachClickListener() {
         final View appLinks = mLayoutInflater.inflate(
diff --git a/tests/robotests/src/com/android/settings/widget/SeekBarPreferenceTest.java b/tests/robotests/src/com/android/settings/widget/SeekBarPreferenceTest.java
index 809aa87..732defb 100644
--- a/tests/robotests/src/com/android/settings/widget/SeekBarPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/widget/SeekBarPreferenceTest.java
@@ -39,7 +39,6 @@
 import com.android.settings.testutils.shadow.ShadowRestrictedLockUtilsInternal;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -49,7 +48,6 @@
 import org.robolectric.annotation.Config;
 import org.robolectric.shadows.androidx.fragment.FragmentController;
 
-@Ignore
 @RunWith(RobolectricTestRunner.class)
 @Config(shadows = {ShadowRestrictedLockUtilsInternal.class, ShadowInteractionJankMonitor.class})
 public class SeekBarPreferenceTest {
@@ -102,7 +100,6 @@
         assertThat(mSeekBarPreference.isSelectable()).isTrue();
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc998")
     public void isSelectable_default_returnFalse() {
diff --git a/tests/robotests/src/com/android/settings/widget/SettingsMainSwitchPreferenceTest.java b/tests/robotests/src/com/android/settings/widget/SettingsMainSwitchPreferenceTest.java
index 33c9fac..c079029 100644
--- a/tests/robotests/src/com/android/settings/widget/SettingsMainSwitchPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/widget/SettingsMainSwitchPreferenceTest.java
@@ -29,7 +29,6 @@
 import com.android.settings.R;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -59,7 +58,6 @@
         mHolder = PreferenceViewHolder.createInstanceForTests(rootView);
     }
 
-    @Ignore
     @Test
     public void onBindViewHolder_isRestricted_restrictIconShouldDisplay() {
         mPreference.onBindViewHolder(mHolder);
diff --git a/tests/robotests/src/com/android/settings/widget/VideoPreferenceTest.java b/tests/robotests/src/com/android/settings/widget/VideoPreferenceTest.java
index 2c0ad7d..2492de1 100644
--- a/tests/robotests/src/com/android/settings/widget/VideoPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/widget/VideoPreferenceTest.java
@@ -40,7 +40,6 @@
 import com.android.settings.testutils.shadow.ShadowSettingsMediaPlayer;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -141,7 +140,6 @@
         assertThat(mAnimationController.isPlaying()).isTrue();
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void onViewVisible_createAnimationController() {
diff --git a/tests/robotests/src/com/android/settings/wifi/ConfigureWifiSettingsTest.java b/tests/robotests/src/com/android/settings/wifi/ConfigureWifiSettingsTest.java
index bb0ae1a..5e3d715 100644
--- a/tests/robotests/src/com/android/settings/wifi/ConfigureWifiSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/ConfigureWifiSettingsTest.java
@@ -30,7 +30,6 @@
 import com.android.settingslib.core.AbstractPreferenceController;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -69,7 +68,6 @@
 
     TestConfigureWifiSettings mSettings;
 
-    @Ignore
     @Before
     public void setUp() {
         when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);
@@ -148,7 +146,6 @@
         verify(mPreferenceScreen).removeAll();
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void getNonIndexableKeys_ifPageDisabled_shouldNotIndexResource() {
diff --git a/tests/robotests/src/com/android/settings/wifi/NetworkRequestDialogActivityTest.java b/tests/robotests/src/com/android/settings/wifi/NetworkRequestDialogActivityTest.java
index fb29924..616cb0b 100644
--- a/tests/robotests/src/com/android/settings/wifi/NetworkRequestDialogActivityTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/NetworkRequestDialogActivityTest.java
@@ -37,7 +37,6 @@
 
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
-import com.android.settings.utils.ActivityControllerWrapper;
 import com.android.settings.wifi.NetworkRequestErrorDialogFragment.ERROR_DIALOG_TYPE;
 import com.android.wifitrackerlib.WifiPickerTracker;
 
@@ -82,8 +81,7 @@
                 .thenReturn(mock(WifiPickerTracker.class));
         mScanResults.add(getScanResult(TEST_SSID, TEST_CAPABILITY));
 
-        mActivity = spy((NetworkRequestDialogActivity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(NetworkRequestDialogActivity.class)).get());
+        mActivity = spy(Robolectric.setupActivity(NetworkRequestDialogActivity.class));
         when(mActivity.getSystemService(WifiManager.class)).thenReturn(mWifiManager);
     }
 
@@ -183,8 +181,7 @@
     @Test
     public void onAbort_withFakeActivity_callStopAndPopShouldBeTrue() {
         final FakeNetworkRequestDialogActivity fakeActivity =
-                (FakeNetworkRequestDialogActivity) ActivityControllerWrapper.setup(
-                        Robolectric.buildActivity(FakeNetworkRequestDialogActivity.class)).get();
+                Robolectric.setupActivity(FakeNetworkRequestDialogActivity.class);
 
         fakeActivity.onResume();
         fakeActivity.onAbort();
diff --git a/tests/robotests/src/com/android/settings/wifi/NetworkRequestDialogFragmentTest.java b/tests/robotests/src/com/android/settings/wifi/NetworkRequestDialogFragmentTest.java
index 2679745..386f66d 100644
--- a/tests/robotests/src/com/android/settings/wifi/NetworkRequestDialogFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/NetworkRequestDialogFragmentTest.java
@@ -45,7 +45,6 @@
 import com.android.settings.R;
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
-import com.android.settings.utils.ActivityControllerWrapper;
 import com.android.wifitrackerlib.WifiEntry;
 import com.android.wifitrackerlib.WifiPickerTracker;
 
@@ -104,11 +103,10 @@
         when(fakeFeatureFactory.wifiTrackerLibProvider.createWifiPickerTracker(
                 any(), any(), any(), any(), any(), anyLong(), anyLong(), any()))
                 .thenReturn(mock(WifiPickerTracker.class));
-        Intent intent = new Intent();
-        intent.putExtra(NetworkRequestDialogFragment.EXTRA_APP_NAME,
-                TEST_APP_NAME);
-        mActivity = (WifiDialogActivity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(WifiDialogActivity.class, intent)).get();
+
+        mActivity = Robolectric.buildActivity(FragmentActivity.class,
+                new Intent().putExtra(NetworkRequestDialogFragment.EXTRA_APP_NAME,
+                        TEST_APP_NAME)).setup().get();
         networkRequestDialogFragment = spy(NetworkRequestDialogFragment.newInstance());
         networkRequestDialogFragment.mWifiPickerTracker = mWifiPickerTracker;
     }
diff --git a/tests/robotests/src/com/android/settings/wifi/WifiDialogActivityTest.java b/tests/robotests/src/com/android/settings/wifi/WifiDialogActivityTest.java
index 8b9faf2..c9cc02e 100644
--- a/tests/robotests/src/com/android/settings/wifi/WifiDialogActivityTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/WifiDialogActivityTest.java
@@ -41,7 +41,6 @@
 import android.os.UserManager;
 
 import com.android.settings.testutils.FakeFeatureFactory;
-import com.android.settings.utils.ActivityControllerWrapper;
 import com.android.settingslib.wifi.AccessPoint;
 import com.android.wifitrackerlib.WifiEntry;
 
@@ -99,8 +98,7 @@
         when(mWifiEntry.canConnect()).thenReturn(true);
         FakeFeatureFactory.setupForTest();
 
-        mActivity = spy((WifiDialogActivity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(WifiDialogActivity.class)).get());
+        mActivity = spy(Robolectric.setupActivity(WifiDialogActivity.class));
         when(mActivity.getSystemService(UserManager.class)).thenReturn(mUserManager);
         when(mActivity.getSystemService(WifiManager.class)).thenReturn(mWifiManager);
         when(mActivity.getSystemService(KeyguardManager.class)).thenReturn(mKeyguardManager);
@@ -156,8 +154,7 @@
         final Intent intent = new Intent("com.android.settings.WIFI_DIALOG");
         intent.putExtra(WifiDialogActivity.KEY_CHOSEN_WIFIENTRY_KEY, "FAKE_KEY");
         intent.putExtra(WifiDialogActivity.KEY_CONNECT_FOR_CALLER, true);
-        mActivity = spy((WifiDialogActivity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(WifiDialogActivity.class, intent)).get());
+        mActivity = spy(Robolectric.buildActivity(WifiDialogActivity.class, intent).setup().get());
         when(mActivity.getSystemService(WifiManager.class)).thenReturn(mWifiManager);
 
         mActivity.onSubmit(mWifiDialog2);
@@ -169,8 +166,7 @@
     public void onSubmit_whenConnectForCallerIsFalse_shouldNotConnectToNetwork() {
         final Intent intent = new Intent();
         intent.putExtra(WifiDialogActivity.KEY_CONNECT_FOR_CALLER, false);
-        mActivity = spy((WifiDialogActivity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(WifiDialogActivity.class, intent)).get());
+        mActivity = spy(Robolectric.buildActivity(WifiDialogActivity.class, intent).setup().get());
         when(mActivity.getSystemService(WifiManager.class)).thenReturn(mWifiManager);
 
         mActivity.onSubmit(mWifiDialog);
@@ -183,8 +179,7 @@
         final Intent intent = new Intent("com.android.settings.WIFI_DIALOG");
         intent.putExtra(WifiDialogActivity.KEY_CHOSEN_WIFIENTRY_KEY, "FAKE_KEY");
         intent.putExtra(WifiDialogActivity.KEY_CONNECT_FOR_CALLER, false);
-        mActivity = spy((WifiDialogActivity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(WifiDialogActivity.class, intent)).get());
+        mActivity = spy(Robolectric.buildActivity(WifiDialogActivity.class, intent).setup().get());
         when(mActivity.getSystemService(WifiManager.class)).thenReturn(mWifiManager);
 
         mActivity.onSubmit(mWifiDialog2);
@@ -198,8 +193,7 @@
         intent.putExtra(WifiDialogActivity.KEY_CONNECT_FOR_CALLER, false);
         intent.putExtra(WizardManagerHelper.EXTRA_IS_FIRST_RUN, true);
         intent.putExtra(WizardManagerHelper.EXTRA_IS_SETUP_FLOW, true);
-        mActivity = spy((WifiDialogActivity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(WifiDialogActivity.class, intent)).get());
+        mActivity = spy(Robolectric.buildActivity(WifiDialogActivity.class, intent).setup().get());
         when(mActivity.getSystemService(WifiManager.class)).thenReturn(mWifiManager);
         doNothing().when(mActivity).createDialogWithSuwTheme();
 
diff --git a/tests/robotests/src/com/android/settings/wifi/WifiNoInternetDialogTest.java b/tests/robotests/src/com/android/settings/wifi/WifiNoInternetDialogTest.java
index 1788a0d..8e52210 100644
--- a/tests/robotests/src/com/android/settings/wifi/WifiNoInternetDialogTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/WifiNoInternetDialogTest.java
@@ -43,10 +43,8 @@
 import android.os.Bundle;
 
 import com.android.settings.R;
-import com.android.settings.utils.ActivityControllerWrapper;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.ArgumentCaptor;
@@ -57,7 +55,6 @@
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
 
-@Ignore
 @RunWith(RobolectricTestRunner.class)
 public class WifiNoInternetDialogTest {
 
@@ -87,8 +84,8 @@
 
     @Test
     public void launchActivity_noIntentAction_shouldNotFatalException() {
-        ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(WifiNoInternetDialog.class)).get();
+        WifiNoInternetDialog wifiNoInternetDialog =
+                Robolectric.setupActivity(WifiNoInternetDialog.class);
     }
 
     @Test
@@ -276,7 +273,6 @@
                 RuntimeEnvironment.application.getPackageName(),
                 WifiNoInternetDialog.class.getName());
         intent.putExtra(ConnectivityManager.EXTRA_NETWORK, network);
-        mActivity = spy((WifiNoInternetDialog) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(WifiNoInternetDialog.class, intent)).get());
+        mActivity = spy(Robolectric.buildActivity(WifiNoInternetDialog.class, intent).get());
     }
 }
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/settings/wifi/WifiPrimarySwitchPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/WifiPrimarySwitchPreferenceControllerTest.java
index 2c12517..9204d43 100644
--- a/tests/robotests/src/com/android/settings/wifi/WifiPrimarySwitchPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/WifiPrimarySwitchPreferenceControllerTest.java
@@ -46,7 +46,6 @@
 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -97,7 +96,6 @@
         assertThat(mController.isAvailable()).isTrue();
     }
 
-    @Ignore
     @Test
     @Config(qualifiers = "mcc999")
     public void testWifiPrimarySwitch_ifDisabled_shouldNotBeShown() {
diff --git a/tests/robotests/src/com/android/settings/wifi/WifiScanModeActivityTest.java b/tests/robotests/src/com/android/settings/wifi/WifiScanModeActivityTest.java
index 1d3dadf..5937997 100644
--- a/tests/robotests/src/com/android/settings/wifi/WifiScanModeActivityTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/WifiScanModeActivityTest.java
@@ -30,7 +30,6 @@
 import androidx.test.core.app.ApplicationProvider;
 
 import com.android.settings.testutils.shadow.ShadowUtils;
-import com.android.settings.utils.ActivityControllerWrapper;
 import com.android.settingslib.wifi.WifiPermissionChecker;
 
 import org.junit.After;
@@ -69,8 +68,7 @@
         when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);
         when(mUserManager.isGuestUser()).thenReturn(false);
 
-        mActivity = spy((WifiScanModeActivity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(WifiScanModeActivity.class)).get());
+        mActivity = spy(Robolectric.setupActivity(WifiScanModeActivity.class));
         when(mActivity.getApplicationContext()).thenReturn(mContext);
         mActivity.mWifiPermissionChecker = mWifiPermissionChecker;
     }
@@ -82,8 +80,8 @@
 
     @Test
     public void launchActivity_noIntentAction_shouldNotFatalException() {
-        ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(WifiScanModeActivity.class)).get();
+        WifiScanModeActivity wifiScanModeActivity =
+                Robolectric.setupActivity(WifiScanModeActivity.class);
     }
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragmentTest.java b/tests/robotests/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragmentTest.java
index c5f4cd4..303963d 100644
--- a/tests/robotests/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragmentTest.java
@@ -43,7 +43,6 @@
 
 import com.android.settings.R;
 import com.android.settings.testutils.FakeFeatureFactory;
-import com.android.settings.utils.ActivityControllerWrapper;
 import com.android.wifitrackerlib.WifiEntry;
 import com.android.wifitrackerlib.WifiPickerTracker;
 
@@ -100,8 +99,7 @@
     public void setUp() {
         MockitoAnnotations.initMocks(this);
         mAddAppNetworksFragment = spy(new AddAppNetworksFragment());
-        mActivity = spy((FragmentActivity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(FragmentActivity.class)).get());
+        mActivity = spy(Robolectric.setupActivity(FragmentActivity.class));
         doReturn(mActivity).when(mAddAppNetworksFragment).getActivity();
         when(mWifiManager.isWifiEnabled()).thenReturn(true);
         when(mActivity.getSystemService(WifiManager.class)).thenReturn(mWifiManager);
diff --git a/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingDisclaimerFragmentTest.java b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingDisclaimerFragmentTest.java
index da0bdf2..0ece537 100644
--- a/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingDisclaimerFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingDisclaimerFragmentTest.java
@@ -40,7 +40,6 @@
 import com.android.settings.R;
 import com.android.settings.testutils.shadow.ShadowDisclaimerItemFactory;
 import com.android.settings.testutils.shadow.ShadowFragment;
-import com.android.settings.utils.ActivityControllerWrapper;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -90,8 +89,7 @@
     public void setUp() {
         MockitoAnnotations.initMocks(this);
 
-        mActivity = (FragmentActivity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(FragmentActivity.class)).get();
+        mActivity = Robolectric.setupActivity(FragmentActivity.class);
         mFragment = spy(new WifiCallingDisclaimerFragment());
 
         doReturn(mActivity).when(mFragment).getActivity();
diff --git a/tests/robotests/src/com/android/settings/wifi/dpp/WifiDppConfiguratorActivityTest.java b/tests/robotests/src/com/android/settings/wifi/dpp/WifiDppConfiguratorActivityTest.java
index 56c1ec7..d8605de 100644
--- a/tests/robotests/src/com/android/settings/wifi/dpp/WifiDppConfiguratorActivityTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/dpp/WifiDppConfiguratorActivityTest.java
@@ -28,8 +28,6 @@
 
 import androidx.test.core.app.ApplicationProvider;
 
-import com.android.settings.utils.ActivityControllerWrapper;
-
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -64,15 +62,14 @@
         mIntent.putExtra(WifiDppUtils.EXTRA_WIFI_SECURITY, "WPA");
         mIntent.putExtra(WifiDppUtils.EXTRA_WIFI_PRE_SHARED_KEY, "\\012345678,");
 
-        mActivity = spy((WifiDppConfiguratorActivity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(WifiDppConfiguratorActivity.class)).get());
+        mActivity = spy(Robolectric.setupActivity(WifiDppConfiguratorActivity.class));
         when(mActivity.getApplicationContext()).thenReturn(mContext);
     }
 
     @Test
     public void launchActivity_noIntentAction_shouldNotFatalException() {
-        ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(WifiDppConfiguratorActivity.class)).get();
+        WifiDppConfiguratorActivity wifiDppConfiguratorActivity =
+                Robolectric.setupActivity(WifiDppConfiguratorActivity.class);
     }
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/wifi/dpp/WifiDppEnrolleeActivityTest.java b/tests/robotests/src/com/android/settings/wifi/dpp/WifiDppEnrolleeActivityTest.java
index 717e4a7..67d4678 100644
--- a/tests/robotests/src/com/android/settings/wifi/dpp/WifiDppEnrolleeActivityTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/dpp/WifiDppEnrolleeActivityTest.java
@@ -19,16 +19,15 @@
 import static com.android.settings.wifi.dpp.WifiDppEnrolleeActivity.ACTION_ENROLLEE_QR_CODE_SCANNER;
 
 import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 import android.content.Intent;
 
-import com.android.settings.utils.ActivityControllerWrapper;
 import com.android.settingslib.wifi.WifiRestrictionsCache;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -58,18 +57,16 @@
         when(mIntent.getAction()).thenReturn(ACTION_ENROLLEE_QR_CODE_SCANNER);
         when(mIntent.getStringExtra(WifiDppUtils.EXTRA_WIFI_SSID)).thenReturn(WIFI_SSID);
 
-        mActivity = (WifiDppEnrolleeActivity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(WifiDppEnrolleeActivity.class)).get();
+        mActivity = spy(Robolectric.setupActivity(WifiDppEnrolleeActivity.class));
         mActivity.mWifiRestrictionsCache = mWifiRestrictionsCache;
     }
 
     @Test
     public void launchActivity_noIntentAction_shouldNotFatalException() {
-        ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(WifiDppEnrolleeActivity.class)).get();
+        WifiDppEnrolleeActivity wifiDppEnrolleeActivity =
+                Robolectric.setupActivity(WifiDppEnrolleeActivity.class);
     }
 
-    @Ignore
     @Test
     public void handleIntent_noIntentAction_shouldFinish() {
         when(mIntent.getAction()).thenReturn(null);
@@ -79,7 +76,6 @@
         verify(mActivity).finish();
     }
 
-    @Ignore
     @Test
     public void handleIntent_notAllowedConfigWifi_shouldFinish() {
         when(mWifiRestrictionsCache.isConfigWifiAllowed()).thenReturn(false);
@@ -89,7 +85,6 @@
         verify(mActivity).finish();
     }
 
-    @Ignore
     @Test
     public void handleIntent_hasIntentDataAndAllowedConfigWifi_shouldShowFragment() {
         when(mWifiRestrictionsCache.isConfigWifiAllowed()).thenReturn(true);
diff --git a/tests/robotests/src/com/android/settings/wifi/p2p/WifiP2pSettingsTest.java b/tests/robotests/src/com/android/settings/wifi/p2p/WifiP2pSettingsTest.java
index 25a59a9..a8b1d9c 100644
--- a/tests/robotests/src/com/android/settings/wifi/p2p/WifiP2pSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/p2p/WifiP2pSettingsTest.java
@@ -48,7 +48,6 @@
 
 import com.android.settings.testutils.XmlTestUtils;
 import com.android.settings.testutils.shadow.ShadowInteractionJankMonitor;
-import com.android.settings.utils.ActivityControllerWrapper;
 import com.android.settingslib.core.AbstractPreferenceController;
 
 import org.junit.Before;
@@ -90,8 +89,7 @@
         mContext = RuntimeEnvironment.application;
         TestWifiP2pSettings.sMockWifiP2pManager = mWifiP2pManager;
 
-        mActivity = (FragmentActivity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(FragmentActivity.class)).get();
+        mActivity = Robolectric.setupActivity(FragmentActivity.class);
         mFragment = new TestWifiP2pSettings();
         mFragment.mWifiP2pManager = mWifiP2pManager;
         doReturn(mChannel).when(mWifiP2pManager).initialize(any(), any(), any());
diff --git a/tests/robotests/src/com/android/settings/wifi/savedaccesspoints2/SavedAccessPointsWifiSettings2Test.java b/tests/robotests/src/com/android/settings/wifi/savedaccesspoints2/SavedAccessPointsWifiSettings2Test.java
index d26287d..3e6c64b 100644
--- a/tests/robotests/src/com/android/settings/wifi/savedaccesspoints2/SavedAccessPointsWifiSettings2Test.java
+++ b/tests/robotests/src/com/android/settings/wifi/savedaccesspoints2/SavedAccessPointsWifiSettings2Test.java
@@ -34,7 +34,6 @@
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.settings.R;
 import com.android.settings.testutils.shadow.ShadowInteractionJankMonitor;
-import com.android.settings.utils.ActivityControllerWrapper;
 import com.android.settingslib.core.AbstractPreferenceController;
 
 import org.junit.Before;
@@ -66,8 +65,7 @@
         MockitoAnnotations.initMocks(this);
         mContext = spy(RuntimeEnvironment.application);
         mSettings = spy(new TestFragment());
-        mActivity = (FragmentActivity) ActivityControllerWrapper.setup(
-                Robolectric.buildActivity(FragmentActivity.class)).get();
+        mActivity = Robolectric.setupActivity(FragmentActivity.class);
 
         doReturn(mSubscribedApController).when(mSettings)
                 .use(SubscribedAccessPointsPreferenceController2.class);
diff --git a/tests/spa_unit/Android.bp b/tests/spa_unit/Android.bp
index 0bd5613..28a2667 100644
--- a/tests/spa_unit/Android.bp
+++ b/tests/spa_unit/Android.bp
@@ -27,7 +27,7 @@
     srcs: [
         "src/**/*.kt",
     ],
-
+    use_resource_processor: true,
     static_libs: [
         "Settings-core",
         "SpaLibTestUtils",
diff --git a/tests/uitests/src/com/android/settings/biometrics2/utils/LockScreenUtil.java b/tests/uitests/src/com/android/settings/biometrics2/utils/LockScreenUtil.java
index 23606e5..3505afa 100644
--- a/tests/uitests/src/com/android/settings/biometrics2/utils/LockScreenUtil.java
+++ b/tests/uitests/src/com/android/settings/biometrics2/utils/LockScreenUtil.java
@@ -22,10 +22,10 @@
 import android.app.KeyguardManager;
 import android.content.Context;
 import android.os.SystemClock;
-import android.support.test.uiautomator.UiDevice;
 import android.util.Log;
 
 import androidx.test.InstrumentationRegistry;
+import androidx.test.uiautomator.UiDevice;
 
 import org.junit.Assert;
 
diff --git a/tests/uitests/src/com/android/settings/ui/AboutPhoneSettingsTests.java b/tests/uitests/src/com/android/settings/ui/AboutPhoneSettingsTests.java
deleted file mode 100644
index 225b415..0000000
--- a/tests/uitests/src/com/android/settings/ui/AboutPhoneSettingsTests.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.ui;
-
-import static com.android.settings.ui.testutils.SettingsTestUtils.SETTINGS_PACKAGE;
-import static com.google.common.truth.Truth.assertThat;
-import static com.google.common.truth.Truth.assertWithMessage;
-
-import android.app.Instrumentation;
-import android.content.Intent;
-import android.os.RemoteException;
-import android.provider.Settings;
-import android.text.TextUtils;
-
-import androidx.test.InstrumentationRegistry;
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-import androidx.test.uiautomator.By;
-import androidx.test.uiautomator.Direction;
-import androidx.test.uiautomator.UiDevice;
-import androidx.test.uiautomator.UiObject2;
-import androidx.test.uiautomator.Until;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Iterator;
-
-/** Verifies basic functionality of the About Phone screen */
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class AboutPhoneSettingsTests {
-    private static final int TIMEOUT = 2000;
-
-    // TODO: retrieve using name/ids from com.android.settings package
-    private static final String[] sResourceTexts = {
-            "Phone number",
-            "Legal information",
-            "Regulatory labels"
-    };
-
-    private UiDevice mDevice;
-    private Instrumentation mInstrumentation;
-
-    @Before
-    public void setUp() throws Exception {
-        mInstrumentation = InstrumentationRegistry.getInstrumentation();
-        mDevice = UiDevice.getInstance(mInstrumentation);
-        try {
-            mDevice.setOrientationNatural();
-        } catch (RemoteException e) {
-            throw new RuntimeException("Failed to freeze device orientaion", e);
-        }
-
-        // make sure we are in a clean state before starting the test
-        mDevice.pressHome();
-        Thread.sleep(TIMEOUT * 2);
-        launchAboutPhoneSettings(Settings.ACTION_DEVICE_INFO_SETTINGS);
-        // TODO: make sure we are always at the top of the app
-        // currently this will fail if the user has navigated into submenus
-        UiObject2 view =
-                mDevice.wait(
-                        Until.findObject(By.res(SETTINGS_PACKAGE + ":id/main_content")), TIMEOUT);
-        assertThat(view).isNotNull();
-        view.scroll(Direction.UP, 1.0f);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        // Adding an extra pressBack so we exit About Phone Settings
-        // and finish the test cleanly
-        mDevice.pressBack();
-        mDevice.pressHome(); // finish settings activity
-        mDevice.waitForIdle(TIMEOUT * 2); // give UI time to finish animating
-    }
-
-    @Test
-    public void testAllMenuEntriesExist() {
-        searchForItemsAndTakeAction(mDevice, sResourceTexts);
-    }
-
-    private void launchAboutPhoneSettings(String aboutSetting) {
-        Intent aboutIntent = new Intent(aboutSetting);
-        aboutIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        InstrumentationRegistry.getTargetContext().startActivity(aboutIntent);
-    }
-
-    /**
-     * Removes items found in the view and optionally takes some action.
-     */
-    private void removeItemsAndTakeAction(UiDevice device, ArrayList<String> itemsLeftToFind) {
-        for (Iterator<String> iterator = itemsLeftToFind.iterator(); iterator.hasNext(); ) {
-            String itemText = iterator.next();
-            UiObject2 item = device.wait(Until.findObject(By.text(itemText)), TIMEOUT);
-            if (item != null) {
-                iterator.remove();
-            }
-        }
-    }
-
-    /**
-     * Searches for UI elements in the current view and optionally takes some action.
-     *
-     * <p>Will scroll down the screen until it has found all elements or reached the bottom.
-     * This allows elements to be found and acted on even if they change order.
-     */
-    private void searchForItemsAndTakeAction(UiDevice device, String[] itemsToFind) {
-
-        ArrayList<String> itemsLeftToFind = new ArrayList<>(Arrays.asList(itemsToFind));
-        assertWithMessage("There must be at least one item to search for on the screen!")
-                .that(itemsLeftToFind)
-                .isNotEmpty();
-
-        boolean canScrollDown = true;
-        while (canScrollDown && !itemsLeftToFind.isEmpty()) {
-            removeItemsAndTakeAction(device, itemsLeftToFind);
-
-            // when we've finished searching the current view, scroll down
-            UiObject2 view =
-                    device.wait(
-                            Until.findObject(By.res(SETTINGS_PACKAGE + ":id/main_content")),
-                            TIMEOUT * 2);
-            if (view != null) {
-                canScrollDown = view.scroll(Direction.DOWN, 1.0f);
-            } else {
-                canScrollDown = false;
-            }
-        }
-        // check the last items once we have reached the bottom of the view
-        removeItemsAndTakeAction(device, itemsLeftToFind);
-
-        assertWithMessage("The following items were not found on the screen: "
-                + TextUtils.join(", ", itemsLeftToFind))
-                .that(itemsLeftToFind)
-                .isEmpty();
-    }
-}
diff --git a/tests/uitests/src/com/android/settings/ui/AboutPhoneSettingsTests.kt b/tests/uitests/src/com/android/settings/ui/AboutPhoneSettingsTests.kt
new file mode 100644
index 0000000..0cb03fe
--- /dev/null
+++ b/tests/uitests/src/com/android/settings/ui/AboutPhoneSettingsTests.kt
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.ui
+
+import android.provider.Settings
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import androidx.test.platform.app.InstrumentationRegistry
+import androidx.test.uiautomator.UiDevice
+import com.android.settings.ui.testutils.SettingsTestUtils.assertHasTexts
+import com.android.settings.ui.testutils.SettingsTestUtils.startMainActivityFromHomeScreen
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+
+/** Verifies basic functionality of the About Phone screen  */
+@RunWith(AndroidJUnit4::class)
+@SmallTest
+class AboutPhoneSettingsTests {
+    private val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
+
+    @Before
+    fun setUp() {
+        device.startMainActivityFromHomeScreen(Settings.ACTION_DEVICE_INFO_SETTINGS)
+    }
+
+    @Test
+    fun testAllMenuEntriesExist() {
+        device.assertHasTexts(ON_SCREEN_TEXTS)
+    }
+
+    private companion object {
+        val ON_SCREEN_TEXTS = listOf(
+            "Device name",
+            "Legal information",
+            "Regulatory labels"
+        )
+    }
+}
diff --git a/tests/uitests/src/com/android/settings/ui/AppsSettingsRetainFilterTests.java b/tests/uitests/src/com/android/settings/ui/AppsSettingsRetainFilterTests.java
deleted file mode 100644
index b830b30..0000000
--- a/tests/uitests/src/com/android/settings/ui/AppsSettingsRetainFilterTests.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.ui;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Intent;
-import android.os.RemoteException;
-import android.provider.Settings;
-import android.system.helpers.ActivityHelper;
-
-import androidx.test.InstrumentationRegistry;
-import androidx.test.runner.AndroidJUnit4;
-import androidx.test.uiautomator.By;
-import androidx.test.uiautomator.UiDevice;
-import androidx.test.uiautomator.UiObject2;
-import androidx.test.uiautomator.Until;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@RunWith(AndroidJUnit4.class)
-public class AppsSettingsRetainFilterTests {
-    private static final int TIMEOUT = 2000;
-    private UiDevice mDevice;
-    private ActivityHelper mActivityHelper = null;
-
-    @Before
-    public void setUp() throws Exception {
-        mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
-        mActivityHelper = ActivityHelper.getInstance();
-
-        try {
-            mDevice.setOrientationNatural();
-        } catch (RemoteException e) {
-            throw new RuntimeException("failed to freeze device orientation", e);
-        }
-
-        mDevice.pressHome();
-        mDevice.waitForIdle(TIMEOUT);
-    }
-
-    @Test
-    public void testDisablingSystemAppAndRotateDevice() throws Exception {
-        launchAppsSettings();
-
-        UiObject2 calculator = mDevice.wait(
-                Until.findObject(By.text("Calculator")), TIMEOUT);
-        assertThat(calculator).isNotNull();
-        calculator.click();
-        mDevice.waitForIdle(TIMEOUT);
-
-        UiObject2 disableButton = mDevice.wait(
-                Until.findObject(By.text("DISABLE")), TIMEOUT);
-        assertThat(disableButton).isNotNull();
-        disableButton.click();
-        mDevice.waitForIdle(TIMEOUT);
-
-        // Click on "Disable App" on dialog.
-        UiObject2 dialogDisableButton = mDevice.wait(
-                Until.findObject(By.text("DISABLE APP")), TIMEOUT);
-        assertThat(dialogDisableButton).isNotNull();
-        dialogDisableButton.click();
-        mDevice.waitForIdle(TIMEOUT);
-
-        UiObject2 enableButton = mDevice.wait(
-                Until.findObject(By.text("ENABLE")), TIMEOUT);
-        assertThat(enableButton).isNotNull();
-
-        mDevice.pressBack();
-        mDevice.waitForIdle(TIMEOUT);
-
-        UiObject2 spinnerHeader =  mDevice.wait(
-                Until.findObject(By.text("All apps")), TIMEOUT);
-        assertThat(spinnerHeader).isNotNull();
-        spinnerHeader.click();
-
-        UiObject2 optionDisabledApps =  mDevice.wait(
-                Until.findObject(By.text("Disabled apps")), TIMEOUT);
-        assertThat(optionDisabledApps).isNotNull();
-        optionDisabledApps.click();
-        mDevice.waitForIdle(TIMEOUT);
-
-        try {
-            mDevice.setOrientationLeft();
-            mDevice.waitForIdle(TIMEOUT);
-        } catch (RemoteException e) {
-            throw new RuntimeException("Failed to freeze device orientation", e);
-        }
-
-        try {
-            mDevice.unfreezeRotation();
-            mDevice.waitForIdle(TIMEOUT);
-        } catch (RemoteException e) {
-            throw new RuntimeException("Failed to un-freeze device orientation", e);
-        }
-
-        UiObject2 spinnerDisabledApps =  mDevice.wait(
-                Until.findObject(By.text("Disabled apps")), TIMEOUT);
-        assertThat(spinnerDisabledApps).isNotNull();
-    }
-
-    private void launchAppsSettings() throws Exception {
-        Intent appsSettingsIntent = new
-                Intent(Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS);
-        mActivityHelper.launchIntent(appsSettingsIntent);
-    }
-}
diff --git a/tests/uitests/src/com/android/settings/ui/AppsSettingsRetainFilterTests.kt b/tests/uitests/src/com/android/settings/ui/AppsSettingsRetainFilterTests.kt
new file mode 100644
index 0000000..43610ec
--- /dev/null
+++ b/tests/uitests/src/com/android/settings/ui/AppsSettingsRetainFilterTests.kt
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.ui
+
+import android.provider.Settings
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.platform.app.InstrumentationRegistry
+import androidx.test.uiautomator.By
+import androidx.test.uiautomator.UiDevice
+import com.android.settings.ui.testutils.SettingsTestUtils.assertObject
+import com.android.settings.ui.testutils.SettingsTestUtils.clickObject
+import com.android.settings.ui.testutils.SettingsTestUtils.startMainActivityFromHomeScreen
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@RunWith(AndroidJUnit4::class)
+class AppsSettingsRetainFilterTests {
+    private val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
+
+    @Before
+    fun setUp() {
+        device.startMainActivityFromHomeScreen(Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS)
+    }
+
+    @Test
+    fun testDisablingSystemAppAndRotateDevice() {
+        device.clickObject(By.text("Calculator"))
+        device.clickObject(By.text("Disable"))
+        device.clickObject(By.text("Disable app"))  // Click on "Disable App" on dialog.
+        device.assertObject(By.text("Enable"))
+        device.pressBack()
+        device.clickObject(By.text("All apps"))
+        device.clickObject(By.text("Disabled apps"))
+        device.setOrientationLeft()
+        device.assertObject(By.text("Disabled apps"))
+        device.setOrientationNatural()
+        device.assertObject(By.text("Disabled apps"))
+        device.clickObject(By.text("Calculator"))
+        device.clickObject(By.text("Enable"))
+    }
+}
diff --git a/tests/uitests/src/com/android/settings/ui/AppsSettingsTests.java b/tests/uitests/src/com/android/settings/ui/AppsSettingsTests.java
deleted file mode 100644
index 777ade6..0000000
--- a/tests/uitests/src/com/android/settings/ui/AppsSettingsTests.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.ui;
-
-import android.content.Intent;
-import android.os.RemoteException;
-import android.provider.Settings;
-import android.system.helpers.ActivityHelper;
-import android.test.InstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.util.Log;
-
-import androidx.test.uiautomator.By;
-import androidx.test.uiautomator.Direction;
-import androidx.test.uiautomator.UiDevice;
-import androidx.test.uiautomator.UiObject2;
-import androidx.test.uiautomator.Until;
-
-/** Verifies basic functionality of the About Phone screen */
-public class AppsSettingsTests extends InstrumentationTestCase {
-    private static final boolean LOCAL_LOGV = false;
-    private static final String SETTINGS_PACKAGE = "com.android.settings";
-    private static final String TAG = "AboutPhoneSettingsTest";
-    private static final int TIMEOUT = 2000;
-    private ActivityHelper mActivityHelper = null;
-
-    private UiDevice mDevice;
-
-    private static final String[] sResourceTexts = {
-        "Storage",
-        "Data usage",
-        "Permissions",
-        "App notifications",
-        "Open by default",
-        "Battery",
-        "Memory"
-    };
-
-    @Override
-    public void setUp() throws Exception {
-        if (LOCAL_LOGV) {
-            Log.d(TAG, "-------");
-        }
-        super.setUp();
-        mDevice = UiDevice.getInstance(getInstrumentation());
-        mActivityHelper = ActivityHelper.getInstance();
-        try {
-            mDevice.setOrientationNatural();
-        } catch (RemoteException e) {
-            throw new RuntimeException("Failed to freeze device orientaion", e);
-        }
-
-        // make sure we are in a clean state before starting the test
-        mDevice.pressHome();
-        Thread.sleep(TIMEOUT * 2);
-        launchAppsSettings();
-        UiObject2 view =
-                mDevice.wait(
-                        Until.findObject(By.text("All apps")), TIMEOUT);
-        assertNotNull("Could not find Settings > Apps screen", view);
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        mDevice.pressBack();
-        mDevice.pressHome(); // finish settings activity
-        mDevice.waitForIdle(TIMEOUT * 2); // give UI time to finish animating
-        super.tearDown();
-    }
-
-    @MediumTest
-    public void testAppSettingsListForCalculator() {
-        UiObject2 calculator = mDevice.wait(
-                Until.findObject(By.text("Calculator")), TIMEOUT);
-        calculator.click();
-        for (String setting : sResourceTexts) {
-            UiObject2 appSetting =
-                mDevice.wait(
-                        Until.findObject(By.text(setting)), TIMEOUT);
-            assertNotNull("Missing setting for Calculator: " + setting, appSetting);
-            appSetting.scroll(Direction.DOWN, 10.0f);
-        }
-    }
-
-    @MediumTest
-    public void testDisablingAndEnablingSystemApp() throws Exception {
-        launchAppsSettings();
-        UiObject2 calculator = mDevice.wait(
-                Until.findObject(By.text("Calculator")), TIMEOUT);
-        calculator.click();
-        mDevice.waitForIdle(TIMEOUT);
-        UiObject2 appInfoList = mDevice.wait(
-            Until.findObject(By.res(SETTINGS_PACKAGE, "list")), TIMEOUT);
-        appInfoList.scroll(Direction.DOWN, 100.0f);
-        UiObject2 disableButton = mDevice.wait(
-                Until.findObject(By.text("DISABLE")), TIMEOUT);
-        disableButton.click();
-        mDevice.waitForIdle(TIMEOUT);
-        // Click on "Disable App" on dialog.
-        mDevice.wait(
-                Until.findObject(By.text("DISABLE APP")), TIMEOUT).click();
-        mDevice.waitForIdle(TIMEOUT);
-        UiObject2 enableButton = mDevice.wait(
-                Until.findObject(By.text("ENABLE")), TIMEOUT);
-        assertNotNull("App not disabled successfully", enableButton);
-        enableButton.click();
-        mDevice.waitForIdle(TIMEOUT);
-        disableButton = mDevice.wait(
-                Until.findObject(By.text("DISABLE")), TIMEOUT);
-        assertNotNull("App not enabled successfully", disableButton);
-    }
-
-    private void launchAppsSettings() throws Exception {
-        Intent appsSettingsIntent = new
-                Intent(Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS);
-        mActivityHelper.launchIntent(appsSettingsIntent);
-    }
-}
diff --git a/tests/uitests/src/com/android/settings/ui/AppsSettingsTests.kt b/tests/uitests/src/com/android/settings/ui/AppsSettingsTests.kt
new file mode 100644
index 0000000..9c22247
--- /dev/null
+++ b/tests/uitests/src/com/android/settings/ui/AppsSettingsTests.kt
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.ui
+
+import android.provider.Settings
+import androidx.test.platform.app.InstrumentationRegistry
+import androidx.test.uiautomator.By
+import androidx.test.uiautomator.UiDevice
+import com.android.settings.ui.testutils.SettingsTestUtils.assertHasTexts
+import com.android.settings.ui.testutils.SettingsTestUtils.assertObject
+import com.android.settings.ui.testutils.SettingsTestUtils.clickObject
+import com.android.settings.ui.testutils.SettingsTestUtils.startMainActivityFromHomeScreen
+import com.android.settings.ui.testutils.SettingsTestUtils.waitObject
+import org.junit.Before
+import org.junit.Test
+
+/** Verifies basic functionality of the About Phone screen  */
+class AppsSettingsTests {
+    private val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
+
+    @Before
+    fun setUp() {
+        device.startMainActivityFromHomeScreen(Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS)
+        device.assertObject(By.text("All apps"))
+    }
+
+    @Test
+    fun testAppSettingsListForCalculator() {
+        device.clickObject(By.text("Calculator"))
+        device.waitObject(By.text("Open"))
+        device.assertHasTexts(ON_SCREEN_TEXTS)
+    }
+
+    @Test
+    fun testDisablingAndEnablingSystemApp() {
+        device.clickObject(By.text("Calculator"))
+        device.clickObject(By.text("Disable"))
+        device.clickObject(By.text("Disable app"))  // Click on "Disable app" on dialog.
+        device.clickObject(By.text("Enable"))
+        device.assertObject(By.text("Disable"))
+    }
+
+    private companion object {
+        val ON_SCREEN_TEXTS = listOf(
+            "Notifications",
+            "Permissions",
+            "Storage & cache",
+            "Mobile data & Wi‑Fi",
+            "Screen time",
+            "App battery usage",
+            "Language",
+            "Unused app settings",
+        )
+    }
+}
diff --git a/tests/uitests/src/com/android/settings/ui/BatterySettingsTest.kt b/tests/uitests/src/com/android/settings/ui/BatterySettingsTest.kt
new file mode 100644
index 0000000..d677fb5
--- /dev/null
+++ b/tests/uitests/src/com/android/settings/ui/BatterySettingsTest.kt
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.ui
+
+import android.content.Intent
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.platform.app.InstrumentationRegistry
+import androidx.test.uiautomator.UiDevice
+import com.android.settings.ui.testutils.SettingsTestUtils.assertHasTexts
+import com.android.settings.ui.testutils.SettingsTestUtils.startMainActivityFromHomeScreen
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@RunWith(AndroidJUnit4::class)
+class BatterySettingsTest {
+    private val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
+
+    @Before
+    fun setUp() {
+        device.startMainActivityFromHomeScreen(Intent.ACTION_POWER_USAGE_SUMMARY)
+    }
+
+    @Test
+    fun hasTexts() {
+        device.assertHasTexts(ON_SCREEN_TEXTS)
+    }
+
+    private companion object {
+        // Items we really want to always show
+        val ON_SCREEN_TEXTS = listOf(
+            "Battery usage",
+            "Battery Saver",
+            "Battery percentage",
+            "Remaining battery life is approximate and can change based on usage"
+        )
+    }
+}
diff --git a/tests/uitests/src/com/android/settings/ui/BatterySettingsUITest.java b/tests/uitests/src/com/android/settings/ui/BatterySettingsUITest.java
deleted file mode 100644
index e23239e..0000000
--- a/tests/uitests/src/com/android/settings/ui/BatterySettingsUITest.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.ui;
-
-import android.content.Intent;
-import android.os.RemoteException;
-import android.system.helpers.SettingsHelper;
-
-import androidx.test.InstrumentationRegistry;
-import androidx.test.filters.MediumTest;
-import androidx.test.runner.AndroidJUnit4;
-import androidx.test.uiautomator.UiDevice;
-
-import com.android.settings.ui.testutils.SettingsTestUtils;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@MediumTest
-@RunWith(AndroidJUnit4.class)
-public class BatterySettingsUITest {
-    // Items we really want to always show
-    private static final String[] CATEGORIES = new String[] {
-            "Battery Saver",
-            "Battery percentage",
-            "Battery usage data is approximate and can change based on usage",
-    };
-
-    private UiDevice mDevice;
-    private SettingsHelper mHelper;
-
-    @Before
-    public void setUp() throws Exception {
-        mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
-        mHelper = SettingsHelper.getInstance();
-        try {
-            mDevice.setOrientationNatural();
-        } catch (RemoteException e) {
-            throw new RuntimeException("failed to freeze device orientaion", e);
-        }
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        // Go back to home for next test.
-        mDevice.pressHome();
-    }
-
-    @Test
-    public void launchSecuritySettings() throws Exception {
-        // Launch Settings
-        SettingsHelper.launchSettingsPage(
-                InstrumentationRegistry.getTargetContext(), Intent.ACTION_POWER_USAGE_SUMMARY);
-        mHelper.scrollVert(false);
-        for (String category : CATEGORIES) {
-            SettingsTestUtils.assertTitleMatch(mDevice, category);
-        }
-    }
-}
diff --git a/tests/uitests/src/com/android/settings/ui/ConnectedDeviceTests.java b/tests/uitests/src/com/android/settings/ui/ConnectedDeviceTests.java
index 4fa9857..36beb90 100644
--- a/tests/uitests/src/com/android/settings/ui/ConnectedDeviceTests.java
+++ b/tests/uitests/src/com/android/settings/ui/ConnectedDeviceTests.java
@@ -35,9 +35,11 @@
 
 import org.junit.After;
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+@Ignore
 @MediumTest
 @RunWith(AndroidJUnit4.class)
 public class ConnectedDeviceTests {
diff --git a/tests/uitests/src/com/android/settings/ui/DataSaverSettingsTest.kt b/tests/uitests/src/com/android/settings/ui/DataSaverSettingsTest.kt
new file mode 100644
index 0000000..f3d2d9d
--- /dev/null
+++ b/tests/uitests/src/com/android/settings/ui/DataSaverSettingsTest.kt
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.ui
+
+import android.provider.Settings
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.platform.app.InstrumentationRegistry
+import androidx.test.uiautomator.By
+import androidx.test.uiautomator.UiDevice
+import com.android.settings.ui.testutils.SettingsTestUtils.assertObject
+import com.android.settings.ui.testutils.SettingsTestUtils.startMainActivityFromHomeScreen
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@RunWith(AndroidJUnit4::class)
+class DataSaverSettingsTest {
+    private val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
+
+    @Before
+    fun setUp() {
+        device.startMainActivityFromHomeScreen(Settings.ACTION_DATA_SAVER_SETTINGS)
+    }
+
+    @Test
+    fun hasSwitchBar() {
+        device.assertObject(By.text("Use Data Saver"))
+    }
+}
diff --git a/tests/uitests/src/com/android/settings/ui/DataUsageSettingsTests.java b/tests/uitests/src/com/android/settings/ui/DataUsageSettingsTests.java
index b990f75..3befca3 100644
--- a/tests/uitests/src/com/android/settings/ui/DataUsageSettingsTests.java
+++ b/tests/uitests/src/com/android/settings/ui/DataUsageSettingsTests.java
@@ -26,6 +26,9 @@
 import androidx.test.uiautomator.UiDevice;
 import androidx.test.uiautomator.Until;
 
+import org.junit.Ignore;
+
+@Ignore
 public class DataUsageSettingsTests extends InstrumentationTestCase {
 
     private static final String SETTINGS_PACKAGE = "com.android.settings";
diff --git a/tests/uitests/src/com/android/settings/ui/DevelopmentSettingsTest.kt b/tests/uitests/src/com/android/settings/ui/DevelopmentSettingsTest.kt
new file mode 100644
index 0000000..1afa3ab
--- /dev/null
+++ b/tests/uitests/src/com/android/settings/ui/DevelopmentSettingsTest.kt
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.ui
+
+import android.os.SystemClock
+import android.provider.Settings
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import androidx.test.platform.app.InstrumentationRegistry
+import androidx.test.uiautomator.UiDevice
+import com.android.settings.ui.testutils.SettingsTestUtils.assertHasTexts
+import com.android.settings.ui.testutils.SettingsTestUtils.startMainActivityFromHomeScreen
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@RunWith(AndroidJUnit4::class)
+@SmallTest
+class DevelopmentSettingsTest {
+    private val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
+
+    @Before
+    fun setUp() {
+        device.executeShellCommand("settings put global development_settings_enabled 1")
+        SystemClock.sleep(1000)
+        device.startMainActivityFromHomeScreen(Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS)
+    }
+
+    @Test
+    fun hasTexts() {
+        device.assertHasTexts(ON_SCREEN_TEXTS)
+    }
+
+    private companion object {
+        val ON_SCREEN_TEXTS = listOf(
+            "Use developer options",
+            "Memory",
+            "Stay awake",
+            "USB debugging",
+            "App Compatibility Changes",
+        )
+    }
+}
diff --git a/tests/uitests/src/com/android/settings/ui/HomepageDisplayTests.java b/tests/uitests/src/com/android/settings/ui/HomepageDisplayTests.java
deleted file mode 100644
index 01cfbd4..0000000
--- a/tests/uitests/src/com/android/settings/ui/HomepageDisplayTests.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.ui;
-
-import static com.android.settings.ui.testutils.SettingsTestUtils.SETTINGS_PACKAGE;
-import static com.android.settings.ui.testutils.SettingsTestUtils.TIMEOUT;
-
-import android.os.RemoteException;
-import android.platform.test.annotations.Presubmit;
-import android.provider.Settings;
-import android.system.helpers.SettingsHelper;
-
-import androidx.test.InstrumentationRegistry;
-import androidx.test.filters.MediumTest;
-import androidx.test.runner.AndroidJUnit4;
-import androidx.test.uiautomator.By;
-import androidx.test.uiautomator.Direction;
-import androidx.test.uiautomator.UiDevice;
-import androidx.test.uiautomator.UiObject2;
-import androidx.test.uiautomator.Until;
-
-import com.android.settings.ui.testutils.SettingsTestUtils;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@MediumTest
-@RunWith(AndroidJUnit4.class)
-public class HomepageDisplayTests {
-
-    private static final String[] HOMEPAGE_ITEMS = {
-            "Network & internet",
-            "Connected devices",
-            "Apps & notifications",
-            "Battery",
-            "Display",
-            "Sound",
-            "Storage",
-            "Security",
-            "Location",
-            "Privacy",
-            "Accounts",
-            "Accessibility",
-            "System"
-    };
-
-    private UiDevice mDevice;
-
-    @Before
-    public void setUp() throws Exception {
-        mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
-        try {
-            mDevice.setOrientationNatural();
-        } catch (RemoteException e) {
-            throw new RuntimeException("failed to freeze device orientaion", e);
-        }
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        // Need to finish settings activity
-        mDevice.pressHome();
-    }
-
-    @Presubmit
-    @Test
-    public void testHomepageCategory() throws Exception {
-        // Launch Settings
-        SettingsHelper.launchSettingsPage(
-                InstrumentationRegistry.getContext(), Settings.ACTION_SETTINGS);
-
-        // Scroll to top
-        final UiObject2 view = mDevice.wait(
-                Until.findObject(By.res(SETTINGS_PACKAGE, "main_content")),
-                TIMEOUT);
-        view.scroll(Direction.UP, 100f);
-
-        // Inspect each item
-        for (String item : HOMEPAGE_ITEMS) {
-            SettingsTestUtils.assertTitleMatch(mDevice, item);
-        }
-    }
-}
diff --git a/tests/uitests/src/com/android/settings/ui/HomepageDisplayTests.kt b/tests/uitests/src/com/android/settings/ui/HomepageDisplayTests.kt
new file mode 100644
index 0000000..72a84dc
--- /dev/null
+++ b/tests/uitests/src/com/android/settings/ui/HomepageDisplayTests.kt
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.ui
+
+import android.provider.Settings
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.platform.app.InstrumentationRegistry
+import androidx.test.uiautomator.UiDevice
+import com.android.settings.ui.testutils.SettingsTestUtils.assertHasTexts
+import com.android.settings.ui.testutils.SettingsTestUtils.startMainActivityFromHomeScreen
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@RunWith(AndroidJUnit4::class)
+class HomepageDisplayTests {
+    private val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
+
+    @Before
+    fun setUp() {
+        device.startMainActivityFromHomeScreen(Settings.ACTION_SETTINGS)
+    }
+
+    @Test
+    fun hasHomepageItems() {
+        device.assertHasTexts(HOMEPAGE_ITEMS)
+    }
+
+    private companion object {
+        val HOMEPAGE_ITEMS = listOf(
+            "Network & internet",
+            "Connected devices",
+            "Apps",
+            "Notifications",
+            "Battery",
+            "Storage",
+            "Sound & vibration",
+            "Display",
+            "Accessibility",
+            "Security & privacy",
+            "Location",
+            "Passwords & accounts",
+            "System",
+        )
+    }
+}
diff --git a/tests/uitests/src/com/android/settings/ui/LocationSettingsTests.java b/tests/uitests/src/com/android/settings/ui/LocationSettingsTests.java
index 35b5742..3a9fa08 100644
--- a/tests/uitests/src/com/android/settings/ui/LocationSettingsTests.java
+++ b/tests/uitests/src/com/android/settings/ui/LocationSettingsTests.java
@@ -29,7 +29,9 @@
 import androidx.test.uiautomator.UiObject2;
 import androidx.test.uiautomator.Until;
 
+import org.junit.Ignore;
 
+@Ignore
 public class LocationSettingsTests extends InstrumentationTestCase {
 
     private static final String SETTINGS_PACKAGE = "com.android.settings";
diff --git a/tests/uitests/src/com/android/settings/ui/MoreWirelessSettingsTest2.java b/tests/uitests/src/com/android/settings/ui/MoreWirelessSettingsTest2.java
index 5ed2ca9..4bd3cfb 100644
--- a/tests/uitests/src/com/android/settings/ui/MoreWirelessSettingsTest2.java
+++ b/tests/uitests/src/com/android/settings/ui/MoreWirelessSettingsTest2.java
@@ -35,9 +35,12 @@
 import androidx.test.uiautomator.UiObject2;
 import androidx.test.uiautomator.Until;
 
+import org.junit.Ignore;
+
 /**
  * Additional tests for Wifi Settings.
  */
+@Ignore
 public class MoreWirelessSettingsTest2 extends InstrumentationTestCase {
     // These back button presses are performed in tearDown() to exit Wifi
     // Settings sub-menus that a test might finish in. This number should be
diff --git a/tests/uitests/src/com/android/settings/ui/NotificationSettingsTests.java b/tests/uitests/src/com/android/settings/ui/NotificationSettingsTests.java
index 6ab2828..c1fd4de 100644
--- a/tests/uitests/src/com/android/settings/ui/NotificationSettingsTests.java
+++ b/tests/uitests/src/com/android/settings/ui/NotificationSettingsTests.java
@@ -33,8 +33,11 @@
 import androidx.test.uiautomator.UiObject2;
 import androidx.test.uiautomator.Until;
 
+import org.junit.Ignore;
+
 /** Verifies that you can get to the notification app listing page from the apps & notifications
  * page */
+@Ignore
 public class NotificationSettingsTests extends InstrumentationTestCase {
     private static final boolean LOCAL_LOGV = false;
     private static final String TAG = "NotifiSettingsTests";
diff --git a/tests/uitests/src/com/android/settings/ui/SecuritySettingsLaunchTest.java b/tests/uitests/src/com/android/settings/ui/SecuritySettingsLaunchTest.java
deleted file mode 100644
index bae4c59..0000000
--- a/tests/uitests/src/com/android/settings/ui/SecuritySettingsLaunchTest.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.ui;
-
-import android.os.RemoteException;
-import android.provider.Settings;
-import android.system.helpers.SettingsHelper;
-
-import androidx.test.InstrumentationRegistry;
-import androidx.test.filters.MediumTest;
-import androidx.test.runner.AndroidJUnit4;
-import androidx.test.uiautomator.UiDevice;
-
-import com.android.settings.ui.testutils.SettingsTestUtils;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@MediumTest
-@RunWith(AndroidJUnit4.class)
-public class SecuritySettingsLaunchTest {
-
-    // Items we really want to always show
-    private static final String[] CATEGORIES = new String[]{
-            "Security status",
-            "Device security",
-            "Privacy",
-    };
-
-    private UiDevice mDevice;
-    private SettingsHelper mHelper;
-
-    @Before
-    public void setUp() throws Exception {
-        mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
-        mHelper = SettingsHelper.getInstance();
-        try {
-            mDevice.setOrientationNatural();
-        } catch (RemoteException e) {
-            throw new RuntimeException("failed to freeze device orientaion", e);
-        }
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        // Go back to home for next test.
-        mDevice.pressHome();
-    }
-
-    @Test
-    public void launchSecuritySettings() throws Exception {
-        // Launch Settings
-        SettingsHelper.launchSettingsPage(
-                InstrumentationRegistry.getTargetContext(), Settings.ACTION_SECURITY_SETTINGS);
-        mHelper.scrollVert(false);
-        for (String category : CATEGORIES) {
-            SettingsTestUtils.assertTitleMatch(mDevice, category);
-        }
-    }
-}
diff --git a/tests/uitests/src/com/android/settings/ui/SecuritySettingsTest.kt b/tests/uitests/src/com/android/settings/ui/SecuritySettingsTest.kt
new file mode 100644
index 0000000..5339e95
--- /dev/null
+++ b/tests/uitests/src/com/android/settings/ui/SecuritySettingsTest.kt
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.ui
+
+import android.provider.Settings
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.platform.app.InstrumentationRegistry
+import androidx.test.uiautomator.UiDevice
+import com.android.settings.ui.testutils.SettingsTestUtils.assertHasTexts
+import com.android.settings.ui.testutils.SettingsTestUtils.startMainActivityFromHomeScreen
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@RunWith(AndroidJUnit4::class)
+class SecuritySettingsTest {
+    private val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
+
+    @Before
+    fun setUp() {
+        device.startMainActivityFromHomeScreen(Settings.ACTION_SECURITY_SETTINGS)
+    }
+
+    @Test
+    fun hasTexts() {
+        device.assertHasTexts(ON_SCREEN_TEXTS)
+    }
+
+    private companion object {
+        // Items we really want to always show
+        val ON_SCREEN_TEXTS = listOf(
+            "Device unlock",
+            "Privacy",
+            "More security & privacy",
+        )
+    }
+}
diff --git a/tests/uitests/src/com/android/settings/ui/SoundSettingsTest.java b/tests/uitests/src/com/android/settings/ui/SoundSettingsTest.java
index 29f7eec..3582a1d 100644
--- a/tests/uitests/src/com/android/settings/ui/SoundSettingsTest.java
+++ b/tests/uitests/src/com/android/settings/ui/SoundSettingsTest.java
@@ -30,8 +30,11 @@
 import androidx.test.uiautomator.UiObject2;
 import androidx.test.uiautomator.Until;
 
+import org.junit.Ignore;
+
 import java.util.Map;
 
+@Ignore
 public class SoundSettingsTest extends InstrumentationTestCase {
     private static final String PAGE = Settings.ACTION_SOUND_SETTINGS;
     private static final int TIMEOUT = 2000;
diff --git a/tests/uitests/src/com/android/settings/ui/StorageSettingsTest.kt b/tests/uitests/src/com/android/settings/ui/StorageSettingsTest.kt
new file mode 100644
index 0000000..771512a
--- /dev/null
+++ b/tests/uitests/src/com/android/settings/ui/StorageSettingsTest.kt
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.ui
+
+import android.provider.Settings
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.platform.app.InstrumentationRegistry
+import androidx.test.uiautomator.UiDevice
+import com.android.settings.ui.testutils.SettingsTestUtils.assertHasTexts
+import com.android.settings.ui.testutils.SettingsTestUtils.startMainActivityFromHomeScreen
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@RunWith(AndroidJUnit4::class)
+class StorageSettingsTest {
+    private val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
+
+    @Before
+    fun setUp() {
+        device.startMainActivityFromHomeScreen(Settings.ACTION_INTERNAL_STORAGE_SETTINGS)
+    }
+
+    @Test
+    fun hasTexts() {
+        device.assertHasTexts(ON_SCREEN_TEXTS)
+    }
+
+    private companion object {
+        val ON_SCREEN_TEXTS = listOf(
+            "System",
+            "Documents & other",
+            "Games",
+            "Apps",
+            "Audio",
+            "Videos",
+            "Images",
+        )
+    }
+}
diff --git a/tests/uitests/src/com/android/settings/ui/StorageSettingsUITest.java b/tests/uitests/src/com/android/settings/ui/StorageSettingsUITest.java
deleted file mode 100644
index 63b87ba..0000000
--- a/tests/uitests/src/com/android/settings/ui/StorageSettingsUITest.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.ui;
-
-import android.os.RemoteException;
-import android.provider.Settings;
-import android.system.helpers.SettingsHelper;
-import android.test.suitebuilder.annotation.MediumTest;
-
-import androidx.test.InstrumentationRegistry;
-import androidx.test.runner.AndroidJUnit4;
-import androidx.test.uiautomator.UiDevice;
-
-import com.android.settings.ui.testutils.SettingsTestUtils;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@RunWith(AndroidJUnit4.class)
-@MediumTest
-public class StorageSettingsUITest {
-
-    private static final String[] TITLES = {
-            "Photos & videos",
-            "Music & audio",
-            "Games",
-            "Movie & TV apps",
-            "Other apps",
-            "Files",
-            "System",
-    };
-    private UiDevice mDevice;
-    private SettingsHelper mHelper;
-
-
-    @Before
-    public void setUp() throws Exception {
-        mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
-        mHelper = SettingsHelper.getInstance();
-
-        try {
-            mDevice.setOrientationNatural();
-        } catch (RemoteException e) {
-            throw new RuntimeException("failed to freeze device orientation", e);
-        }
-    }
-
-    @After
-    public void tearDown() {
-        mDevice.pressHome();
-    }
-
-    @Test
-    public void launchStorageSettings() throws Exception {
-        // Launch Settings
-        SettingsHelper.launchSettingsPage(
-                InstrumentationRegistry.getTargetContext(),
-                Settings.ACTION_INTERNAL_STORAGE_SETTINGS);
-        mHelper.scrollVert(false);
-        for (String category : TITLES) {
-            SettingsTestUtils.assertTitleMatch(mDevice, category);
-        }
-    }
-}
diff --git a/tests/uitests/src/com/android/settings/ui/StorageWizardTest.java b/tests/uitests/src/com/android/settings/ui/StorageWizardTest.java
index 501515f..9d5c28b 100644
--- a/tests/uitests/src/com/android/settings/ui/StorageWizardTest.java
+++ b/tests/uitests/src/com/android/settings/ui/StorageWizardTest.java
@@ -32,6 +32,7 @@
 
 import org.junit.After;
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
@@ -42,6 +43,7 @@
  * Verify storage wizard flows. Temporarily enables a virtual disk which enables
  * testing on all devices, regardless of physical SD card support.
  */
+@Ignore
 @RunWith(AndroidJUnit4.class)
 public class StorageWizardTest {
     private static final String ANDROID_PACKAGE = "android";
diff --git a/tests/uitests/src/com/android/settings/ui/SyncSettingsTest.java b/tests/uitests/src/com/android/settings/ui/SyncSettingsTest.java
deleted file mode 100644
index 41a3829..0000000
--- a/tests/uitests/src/com/android/settings/ui/SyncSettingsTest.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.ui;
-
-import static junit.framework.Assert.assertTrue;
-
-import android.os.RemoteException;
-import android.provider.Settings;
-import android.system.helpers.SettingsHelper;
-
-import androidx.test.InstrumentationRegistry;
-import androidx.test.filters.MediumTest;
-import androidx.test.runner.AndroidJUnit4;
-import androidx.test.uiautomator.By;
-import androidx.test.uiautomator.UiDevice;
-import androidx.test.uiautomator.UiObject2;
-import androidx.test.uiautomator.Until;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@MediumTest
-@RunWith(AndroidJUnit4.class)
-public class SyncSettingsTest {
-    private static final int TIMEOUT = 2000;
-
-    private UiDevice mDevice;
-
-    @Before
-    public void setUp() throws Exception {
-        mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
-
-        try {
-            mDevice.setOrientationNatural();
-        } catch (RemoteException e) {
-            throw new RuntimeException("failed to freeze device orientaion", e);
-        }
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        // Need to finish settings activity
-        mDevice.pressHome();
-    }
-
-    @Test
-    public void syncPageShouldHaveAddAccountButton() throws Exception {
-        // Launch Settings
-        SettingsHelper.launchSettingsPage(
-                InstrumentationRegistry.getContext(), Settings.ACTION_SYNC_SETTINGS);
-        UiObject2 addAccount = mDevice.wait(
-                Until.findObject(By.text("Add account")), TIMEOUT);
-        assertTrue(addAccount != null);
-    }
-}
diff --git a/tests/uitests/src/com/android/settings/ui/SyncSettingsTest.kt b/tests/uitests/src/com/android/settings/ui/SyncSettingsTest.kt
new file mode 100644
index 0000000..5de5ba5
--- /dev/null
+++ b/tests/uitests/src/com/android/settings/ui/SyncSettingsTest.kt
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.ui
+
+import android.provider.Settings
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.platform.app.InstrumentationRegistry
+import androidx.test.uiautomator.UiDevice
+import com.android.settings.ui.testutils.SettingsTestUtils.assertHasTexts
+import com.android.settings.ui.testutils.SettingsTestUtils.startMainActivityFromHomeScreen
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@RunWith(AndroidJUnit4::class)
+class SyncSettingsTest {
+    private val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
+
+    @Before
+    fun setUp() {
+        device.startMainActivityFromHomeScreen(Settings.ACTION_SYNC_SETTINGS)
+    }
+
+    @Test
+    fun hasTexts() {
+        device.assertHasTexts(ON_SCREEN_TEXTS)
+    }
+
+    private companion object {
+        val ON_SCREEN_TEXTS = listOf("Add account")
+    }
+}
diff --git a/tests/uitests/src/com/android/settings/ui/WirelessNetworkSettingsTests.java b/tests/uitests/src/com/android/settings/ui/WirelessNetworkSettingsTests.java
index 49b602e..d320e08 100644
--- a/tests/uitests/src/com/android/settings/ui/WirelessNetworkSettingsTests.java
+++ b/tests/uitests/src/com/android/settings/ui/WirelessNetworkSettingsTests.java
@@ -37,12 +37,14 @@
 
 import org.junit.After;
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
 /**
  * Core tests for Wifi Settings.
  */
+@Ignore
 @RunWith(AndroidJUnit4.class)
 @MediumTest
 public class WirelessNetworkSettingsTests {
diff --git a/tests/uitests/src/com/android/settings/ui/ZonePickerSettingsTest.java b/tests/uitests/src/com/android/settings/ui/ZonePickerSettingsTest.java
index 16a5f84..bf13dfc 100644
--- a/tests/uitests/src/com/android/settings/ui/ZonePickerSettingsTest.java
+++ b/tests/uitests/src/com/android/settings/ui/ZonePickerSettingsTest.java
@@ -43,11 +43,13 @@
 
 import org.junit.After;
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
 import java.util.TimeZone;
 
+@Ignore
 @MediumTest
 @RunWith(AndroidJUnit4.class)
 public class ZonePickerSettingsTest {
diff --git a/tests/uitests/src/com/android/settings/ui/inputmethods/DataSaverSummaryUITest.java b/tests/uitests/src/com/android/settings/ui/inputmethods/DataSaverSummaryUITest.java
deleted file mode 100644
index fa857bd..0000000
--- a/tests/uitests/src/com/android/settings/ui/inputmethods/DataSaverSummaryUITest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.ui.inputmethods;
-
-import static com.android.settings.ui.testutils.SettingsTestUtils.TIMEOUT;
-import static com.google.common.truth.Truth.assertThat;
-
-import android.app.Instrumentation;
-import android.content.Intent;
-
-import androidx.test.InstrumentationRegistry;
-import androidx.test.runner.AndroidJUnit4;
-import androidx.test.uiautomator.By;
-import androidx.test.uiautomator.UiDevice;
-import androidx.test.uiautomator.UiObject2;
-import androidx.test.uiautomator.Until;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@RunWith(AndroidJUnit4.class)
-public class DataSaverSummaryUITest {
-
-    private Instrumentation mInstrumentation;
-    private Intent mIntent;
-    private UiDevice mUiDevice;
-
-    @Before
-    public void setUp() {
-        mInstrumentation = InstrumentationRegistry.getInstrumentation();
-        mUiDevice = UiDevice.getInstance(mInstrumentation);
-        mIntent = new Intent().setClassName("com.android.settings",
-                "com.android.settings.Settings$DataUsageSummaryActivity")
-                .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-    }
-
-    @Test
-    public void launchSettings_hasSwitchBar() throws Exception {
-        launchDataSaverSettings();
-        final UiObject2 switchBar =
-                mUiDevice.wait(Until.findObject(By.text("Use Data Saver")), TIMEOUT);
-
-        assertThat(switchBar).isNotNull();
-    }
-
-    private void launchDataSaverSettings() throws InterruptedException {
-        mInstrumentation.getContext().startActivity(mIntent);
-        final UiObject2 prefDataSaver =
-                mUiDevice.wait(Until.findObject(By.text("Data Saver")), TIMEOUT);
-
-        assertThat(prefDataSaver).isNotNull();
-        prefDataSaver.click();
-        Thread.sleep(TIMEOUT * 2);
-    }
-}
diff --git a/tests/uitests/src/com/android/settings/ui/inputmethods/SpellCheckerSettingsTest.kt b/tests/uitests/src/com/android/settings/ui/inputmethods/SpellCheckerSettingsTest.kt
new file mode 100644
index 0000000..d65efb7
--- /dev/null
+++ b/tests/uitests/src/com/android/settings/ui/inputmethods/SpellCheckerSettingsTest.kt
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.ui.inputmethods
+
+import android.content.Intent
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.platform.app.InstrumentationRegistry
+import androidx.test.uiautomator.By
+import androidx.test.uiautomator.UiDevice
+import com.android.settings.ui.testutils.SettingsTestUtils.SETTINGS_PACKAGE
+import com.android.settings.ui.testutils.SettingsTestUtils.assertObject
+import com.android.settings.ui.testutils.SettingsTestUtils.startMainActivityFromHomeScreen
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@RunWith(AndroidJUnit4::class)
+class SpellCheckerSettingsTest {
+    private val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
+
+    @Before
+    fun setUp() {
+        device.startMainActivityFromHomeScreen(Intent().apply {
+            setClassName(
+                SETTINGS_PACKAGE,
+                "com.android.settings.Settings\$SpellCheckersSettingsActivity",
+            )
+        })
+    }
+
+    @Test
+    fun hasSwitchBar() {
+        device.assertObject(By.text("Use spell checker"))
+    }
+}
diff --git a/tests/uitests/src/com/android/settings/ui/inputmethods/SpellCheckerSettingsUITest.java b/tests/uitests/src/com/android/settings/ui/inputmethods/SpellCheckerSettingsUITest.java
deleted file mode 100644
index a46a00d..0000000
--- a/tests/uitests/src/com/android/settings/ui/inputmethods/SpellCheckerSettingsUITest.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.ui.inputmethods;
-
-import static com.android.settings.ui.testutils.SettingsTestUtils.TIMEOUT;
-import static com.google.common.truth.Truth.assertThat;
-
-import android.app.Instrumentation;
-import android.content.Intent;
-
-import androidx.test.InstrumentationRegistry;
-import androidx.test.runner.AndroidJUnit4;
-import androidx.test.uiautomator.By;
-import androidx.test.uiautomator.UiDevice;
-import androidx.test.uiautomator.UiObject2;
-import androidx.test.uiautomator.Until;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@RunWith(AndroidJUnit4.class)
-public class SpellCheckerSettingsUITest {
-
-    private Instrumentation mInstrumentation;
-    private Intent mIntent;
-    private UiDevice mUiDevice;
-
-    @Before
-    public void setUp() {
-        mInstrumentation = InstrumentationRegistry.getInstrumentation();
-        mUiDevice = UiDevice.getInstance(mInstrumentation);
-        mIntent = new Intent().setClassName("com.android.settings",
-                "com.android.settings.Settings$SpellCheckersSettingsActivity")
-                .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-    }
-
-    @Test
-    public void launchSettings_hasSwitchBar() {
-        mInstrumentation.getContext().startActivity(mIntent);
-        final UiObject2 switchBar =
-                mUiDevice.wait(Until.findObject(By.text("Use spell checker")), TIMEOUT);
-
-        assertThat(switchBar).isNotNull();
-    }
-}
diff --git a/tests/uitests/src/com/android/settings/ui/testutils/SettingsTestUtils.java b/tests/uitests/src/com/android/settings/ui/testutils/SettingsTestUtils.java
deleted file mode 100644
index eb8e33c..0000000
--- a/tests/uitests/src/com/android/settings/ui/testutils/SettingsTestUtils.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.ui.testutils;
-
-import static org.junit.Assert.assertNotNull;
-
-import androidx.test.uiautomator.By;
-import androidx.test.uiautomator.Direction;
-import androidx.test.uiautomator.UiDevice;
-import androidx.test.uiautomator.UiObject2;
-import androidx.test.uiautomator.Until;
-
-public class SettingsTestUtils {
-
-    public static final String SETTINGS_PACKAGE = "com.android.settings";
-    public static final int TIMEOUT = 2000;
-
-    private void scrollToTop(UiDevice device) throws Exception {
-        int count = 5;
-        UiObject2 view = null;
-        while (count >= 0) {
-            view = device.wait(
-                    Until.findObject(By.res(SETTINGS_PACKAGE, "main_content")),
-                    TIMEOUT);
-            view.scroll(Direction.UP, 1.0f);
-            count--;
-        }
-    }
-
-    public static void assertTitleMatch(UiDevice device, String title) {
-        int maxAttempt = 5;
-        UiObject2 item = null;
-        UiObject2 view = null;
-        while (maxAttempt-- > 0) {
-            item = device.wait(Until.findObject(By.res("android:id/title").text(title)), TIMEOUT);
-            if (item == null) {
-                view = device.wait(
-                        Until.findObject(By.res(SETTINGS_PACKAGE, "main_content")),
-                        TIMEOUT);
-                view.scroll(Direction.DOWN, 1.0f);
-            } else {
-                return;
-            }
-        }
-        assertNotNull(String.format("%s in Setting has not been loaded correctly", title), item);
-    }
-}
diff --git a/tests/uitests/src/com/android/settings/ui/testutils/SettingsTestUtils.kt b/tests/uitests/src/com/android/settings/ui/testutils/SettingsTestUtils.kt
new file mode 100644
index 0000000..1dd07cd
--- /dev/null
+++ b/tests/uitests/src/com/android/settings/ui/testutils/SettingsTestUtils.kt
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.ui.testutils
+
+import android.content.Context
+import android.content.Intent
+import android.view.KeyEvent
+import androidx.test.core.app.ApplicationProvider
+import androidx.test.uiautomator.By
+import androidx.test.uiautomator.BySelector
+import androidx.test.uiautomator.Direction
+import androidx.test.uiautomator.UiDevice
+import androidx.test.uiautomator.UiObject2
+import androidx.test.uiautomator.Until
+import com.google.common.truth.Truth.assertWithMessage
+
+object SettingsTestUtils {
+    const val SETTINGS_PACKAGE = "com.android.settings"
+    const val TIMEOUT = 2000L
+
+    fun UiDevice.waitObject(bySelector: BySelector): UiObject2? =
+        wait(Until.findObject(bySelector), TIMEOUT)
+
+    fun UiDevice.assertObject(bySelector: BySelector): UiObject2 =
+        checkNotNull(waitObject(bySelector)) { "$bySelector not found" }
+
+    fun UiDevice.clickObject(bySelector: BySelector) = assertObject(bySelector).click()
+
+    fun UiDevice.startMainActivityFromHomeScreen(action: String) {
+        startMainActivityFromHomeScreen(Intent(action))
+    }
+
+    fun UiDevice.startMainActivityFromHomeScreen(intent: Intent) {
+        pressKeyCodes(intArrayOf(KeyEvent.KEYCODE_MENU, KeyEvent.KEYCODE_MENU))  // unlock
+
+        // Start from the home screen
+        pressHome()
+
+        // Wait for launcher
+        waitObject(By.pkg(launcherPackageName).depth(0))
+
+        // Launch the app
+        ApplicationProvider.getApplicationContext<Context>().startActivity(Intent(intent).apply {
+            addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
+            addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+        })
+
+        // Wait for the app to appear
+        waitObject(By.pkg(SETTINGS_PACKAGE).depth(0))
+    }
+
+    fun UiDevice.assertHasTexts(texts: List<String>) {
+        val scrollableObj =
+            findObject(By.res(SETTINGS_PACKAGE, "main_content"))
+                ?: findObject(By.scrollable(true))
+        for (text in texts) {
+            val selector = By.text(text)
+            assertWithMessage("Missing text: $text").that(
+                findObject(selector)
+                    ?: scrollableObj.scrollUntil(Direction.DOWN, Until.findObject(selector))
+                    ?: waitObject(selector)
+            ).isNotNull()
+        }
+    }
+}
diff --git a/tests/unit/Android.bp b/tests/unit/Android.bp
index f6a9583..cc003ea 100644
--- a/tests/unit/Android.bp
+++ b/tests/unit/Android.bp
@@ -25,8 +25,6 @@
         "androidx.test.core",
         "androidx.test.rules",
         "androidx.test.espresso.core",
-        "androidx.test.espresso.contrib-nodeps",
-        "androidx.test.espresso.intents-nodeps",
         "androidx.test.ext.junit",
         "androidx.preference_preference",
         "mockito-target-minus-junit4",
@@ -46,7 +44,7 @@
         "src/**/*.java",
         "src/**/*.kt",
     ],
-
+    use_resource_processor: true,
     platform_apis: true,
     test_suites: ["device-tests"],
 
diff --git a/tests/unit/src/com/android/settings/applications/credentials/CredentialManagerPreferenceControllerTest.java b/tests/unit/src/com/android/settings/applications/credentials/CredentialManagerPreferenceControllerTest.java
index d520364..7d400ad 100644
--- a/tests/unit/src/com/android/settings/applications/credentials/CredentialManagerPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/applications/credentials/CredentialManagerPreferenceControllerTest.java
@@ -18,10 +18,7 @@
 
 import static com.android.settings.core.BasePreferenceController.AVAILABLE;
 import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE;
-
 import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
 
 import android.app.Activity;
@@ -33,15 +30,12 @@
 import android.credentials.CredentialProviderInfo;
 import android.net.Uri;
 import android.os.Looper;
-import android.os.UserHandle;
 import android.provider.Settings;
 
-import androidx.lifecycle.Lifecycle;
 import androidx.preference.Preference;
 import androidx.preference.PreferenceCategory;
 import androidx.preference.PreferenceManager;
 import androidx.preference.PreferenceScreen;
-import androidx.preference.SwitchPreference;
 import androidx.test.core.app.ApplicationProvider;
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 
@@ -86,12 +80,14 @@
         mCredentialsPreferenceCategory.setKey("credentials_test");
         mScreen.addPreference(mCredentialsPreferenceCategory);
         mReceivedResultCode = Optional.empty();
-        mDelegate = new CredentialManagerPreferenceController.Delegate() {
-                public void setActivityResult(int resultCode) {
-                    mReceivedResultCode = Optional.of(resultCode);
-                }
-                public void forceDelegateRefresh() {}
-            };
+        mDelegate =
+                new CredentialManagerPreferenceController.Delegate() {
+                    public void setActivityResult(int resultCode) {
+                        mReceivedResultCode = Optional.of(resultCode);
+                    }
+
+                    public void forceDelegateRefresh() {}
+                };
     }
 
     @Test
@@ -134,7 +130,7 @@
     }
 
     @Test
-    public void buildSwitchPreference() {
+    public void buildPreference() {
         CredentialProviderInfo providerInfo1 =
                 createCredentialProviderInfoWithSubtitle(
                         "com.android.provider1", "ClassA", "Service Title", null);
@@ -158,13 +154,15 @@
         assertThat(enabledProviders.contains("com.android.provider1")).isTrue();
 
         // Create the pref (checked).
-        SwitchPreference pref = controller.createPreference(mContext, providerInfo1);
+        CredentialManagerPreferenceController.CombiPreference pref =
+                controller.createPreference(mContext, providerInfo1);
         assertThat(pref.getTitle().toString()).isEqualTo("Service Title");
         assertThat(pref.isChecked()).isTrue();
         assertThat(pref.getSummary()).isNull();
 
         // Create the pref (not checked).
-        SwitchPreference pref2 = controller.createPreference(mContext, providerInfo2);
+        CredentialManagerPreferenceController.CombiPreference pref2 =
+                controller.createPreference(mContext, providerInfo2);
         assertThat(pref2.getTitle().toString()).isEqualTo("Service Title");
         assertThat(pref2.isChecked()).isFalse();
         assertThat(pref2.getSummary().toString()).isEqualTo("Summary Text");
@@ -311,7 +309,7 @@
         assertThat(controller.isConnected()).isFalse();
         assertThat(mCredentialsPreferenceCategory.getPreferenceCount()).isEqualTo(3);
 
-        Map<String, SwitchPreference> prefs =
+        Map<String, CredentialManagerPreferenceController.CombiPreference> prefs =
                 controller.buildPreferenceList(mContext, mCredentialsPreferenceCategory);
         assertThat(prefs.keySet())
                 .containsExactly(TEST_PACKAGE_NAME_A, TEST_PACKAGE_NAME_B, TEST_PACKAGE_NAME_C);
@@ -349,7 +347,8 @@
         Intent intent = new Intent(PRIMARY_INTENT);
         intent.setData(Uri.parse("package:" + packageName));
         assertThat(controller.verifyReceivedIntent(intent)).isTrue();
-        controller.completeEnableProviderDialogBox(DialogInterface.BUTTON_POSITIVE, packageName, true);
+        controller.completeEnableProviderDialogBox(
+                DialogInterface.BUTTON_POSITIVE, packageName, true);
         assertThat(mReceivedResultCode.get()).isEqualTo(Activity.RESULT_OK);
     }
 
@@ -364,7 +363,8 @@
         Intent intent = new Intent(PRIMARY_INTENT);
         intent.setData(Uri.parse("package:" + packageName));
         assertThat(controller.verifyReceivedIntent(intent)).isTrue();
-        controller.completeEnableProviderDialogBox(DialogInterface.BUTTON_NEGATIVE, packageName, true);
+        controller.completeEnableProviderDialogBox(
+                DialogInterface.BUTTON_NEGATIVE, packageName, true);
         assertThat(mReceivedResultCode.get()).isEqualTo(Activity.RESULT_CANCELED);
     }
 
@@ -390,7 +390,8 @@
         Intent intent = new Intent(ALTERNATE_INTENT);
         intent.setData(Uri.parse("package:" + packageName));
         assertThat(controller.verifyReceivedIntent(intent)).isTrue();
-        controller.completeEnableProviderDialogBox(DialogInterface.BUTTON_POSITIVE, packageName, true);
+        controller.completeEnableProviderDialogBox(
+                DialogInterface.BUTTON_POSITIVE, packageName, true);
         assertThat(mReceivedResultCode.get()).isEqualTo(Activity.RESULT_OK);
     }
 
@@ -405,7 +406,8 @@
         Intent intent = new Intent(ALTERNATE_INTENT);
         intent.setData(Uri.parse("package:" + packageName));
         assertThat(controller.verifyReceivedIntent(intent)).isTrue();
-        controller.completeEnableProviderDialogBox(DialogInterface.BUTTON_NEGATIVE, packageName, true);
+        controller.completeEnableProviderDialogBox(
+                DialogInterface.BUTTON_NEGATIVE, packageName, true);
         assertThat(mReceivedResultCode.get()).isEqualTo(Activity.RESULT_CANCELED);
     }
 
@@ -502,4 +504,4 @@
 
         return new CredentialProviderInfo.Builder(si).setOverrideLabel(serviceLabel);
     }
-}
\ No newline at end of file
+}
diff --git a/tests/unit/src/com/android/settings/datausage/DataUsageSummaryPreferenceTest.java b/tests/unit/src/com/android/settings/datausage/DataUsageSummaryPreferenceTest.java
index b27591e..fe7759d 100644
--- a/tests/unit/src/com/android/settings/datausage/DataUsageSummaryPreferenceTest.java
+++ b/tests/unit/src/com/android/settings/datausage/DataUsageSummaryPreferenceTest.java
@@ -17,40 +17,28 @@
 package com.android.settings.datausage;
 
 import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 import android.content.Context;
-import android.content.Intent;
 import android.content.res.Resources;
 import android.graphics.Typeface;
-import android.net.ConnectivityManager;
-import android.net.NetworkTemplate;
-import android.os.Bundle;
-import android.telephony.SubscriptionManager;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.View.MeasureSpec;
 import android.widget.TextView;
 
 import androidx.preference.PreferenceViewHolder;
-import androidx.test.annotation.UiThreadTest;
 import androidx.test.core.app.ApplicationProvider;
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 
-import com.android.settings.SettingsActivity;
 import com.android.settings.testutils.ResourcesUtils;
 import com.android.settingslib.Utils;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
 import org.mockito.MockitoAnnotations;
 
 import java.util.concurrent.TimeUnit;
@@ -91,31 +79,9 @@
         mUpdateTime = now - UPDATE_LAG_MILLIS;
     }
 
-    @UiThreadTest
-    @Test
-    public void testSetUsageInfo_withLaunchIntent_launchButtonShown() {
-        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
-                new Intent());
-
-        mSummaryPreference.onBindViewHolder(mHolder);
-        assertThat(mSummaryPreference.getLaunchButton(mHolder).getVisibility())
-                .isEqualTo(View.VISIBLE);
-    }
-
-    @Test
-    public void testSetUsageInfo_withoutLaunchIntent_launchButtonNotShown() {
-        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
-                null /* launchIntent */);
-
-        mSummaryPreference.onBindViewHolder(mHolder);
-        assertThat(mSummaryPreference.getLaunchButton(mHolder).getVisibility())
-                .isEqualTo(View.GONE);
-    }
-
     @Test
     public void testSetUsageInfo_withDataPlans_carrierInfoShown() {
-        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 1 /* numPlans */,
-                new Intent());
+        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 1 /* numPlans */);
 
         mSummaryPreference.onBindViewHolder(mHolder);
         assertThat(mSummaryPreference.getCarrierInfo(mHolder).getVisibility())
@@ -124,8 +90,7 @@
 
     @Test
     public void testSetUsageInfo_withNoDataPlans_carrierInfoNotShown() {
-        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
-                new Intent());
+        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */);
 
         mSummaryPreference.onBindViewHolder(mHolder);
         assertThat(mSummaryPreference.getCarrierInfo(mHolder).getVisibility())
@@ -138,8 +103,7 @@
         int smudge = 6;
         final long updateTime = System.currentTimeMillis()
                 - TimeUnit.DAYS.toMillis(baseUnit) - TimeUnit.HOURS.toMillis(smudge);
-        mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */,
-                new Intent());
+        mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */);
 
         mSummaryPreference.onBindViewHolder(mHolder);
         assertThat(mSummaryPreference.getCarrierInfo(mHolder).getText().toString())
@@ -152,8 +116,7 @@
         int smudge = 6;
         final long updateTime = System.currentTimeMillis()
                 - TimeUnit.HOURS.toMillis(baseUnit) - TimeUnit.MINUTES.toMillis(smudge);
-        mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */,
-                new Intent());
+        mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */);
 
         mSummaryPreference.onBindViewHolder(mHolder);
         assertThat(mSummaryPreference.getCarrierInfo(mHolder).getText().toString())
@@ -166,8 +129,7 @@
         int smudge = 6;
         final long updateTime = System.currentTimeMillis()
                 - TimeUnit.MINUTES.toMillis(baseUnit) - TimeUnit.SECONDS.toMillis(smudge);
-        mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */,
-                new Intent());
+        mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */);
 
         mSummaryPreference.onBindViewHolder(mHolder);
         assertThat(mSummaryPreference.getCarrierInfo(mHolder).getText().toString())
@@ -177,8 +139,7 @@
     @Test
     public void testCarrierUpdateTime_shouldFormatLessThanMinuteCorrectly() {
         final long updateTime = System.currentTimeMillis() - TimeUnit.SECONDS.toMillis(45);
-        mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */,
-                new Intent());
+        mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */);
 
         mSummaryPreference.onBindViewHolder(mHolder);
         assertThat(mSummaryPreference.getCarrierInfo(mHolder).getText().toString())
@@ -189,7 +150,7 @@
     public void testCarrierUpdateTimeWithNoCarrier_shouldSayJustNow() {
         final long updateTime = System.currentTimeMillis() - TimeUnit.SECONDS.toMillis(45);
         mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, null /* carrier */,
-                1 /* numPlans */, new Intent());
+                1 /* numPlans */);
 
         mSummaryPreference.onBindViewHolder(mHolder);
         assertThat(mSummaryPreference.getCarrierInfo(mHolder).getText().toString())
@@ -200,7 +161,7 @@
     public void testCarrierUpdateTimeWithNoCarrier_shouldFormatTime() {
         final long updateTime = System.currentTimeMillis() - TimeUnit.MINUTES.toMillis(2);
         mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, null /* carrier */,
-                1 /* numPlans */, new Intent());
+                1 /* numPlans */);
 
         mSummaryPreference.onBindViewHolder(mHolder);
         assertThat(mSummaryPreference.getCarrierInfo(mHolder).getText().toString())
@@ -210,8 +171,7 @@
     @Test
     public void setUsageInfo_withRecentCarrierUpdate_doesNotSetCarrierInfoWarningColorAndFont() {
         final long updateTime = System.currentTimeMillis() - TimeUnit.HOURS.toMillis(1);
-        mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */,
-                new Intent());
+        mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */);
 
         mSummaryPreference.onBindViewHolder(mHolder);
         TextView carrierInfo = mSummaryPreference.getCarrierInfo(mHolder);
@@ -224,8 +184,7 @@
     @Test
     public void testSetUsageInfo_withStaleCarrierUpdate_setsCarrierInfoWarningColorAndFont() {
         final long updateTime = System.currentTimeMillis() - TimeUnit.HOURS.toMillis(7);
-        mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */,
-                new Intent());
+        mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */);
 
         mSummaryPreference.onBindViewHolder(mHolder);
         TextView carrierInfo = mSummaryPreference.getCarrierInfo(mHolder);
@@ -238,8 +197,7 @@
 
     @Test
     public void testSetUsageInfo_withNoDataPlans_usageTitleNotShown() {
-        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
-                new Intent());
+        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */);
 
         mSummaryPreference.onBindViewHolder(mHolder);
         assertThat(mSummaryPreference.getUsageTitle(mHolder).getVisibility()).isEqualTo(View.GONE);
@@ -247,8 +205,7 @@
 
     @Test
     public void testSetUsageInfo_withMultipleDataPlans_usageTitleShown() {
-        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 2 /* numPlans */,
-                new Intent());
+        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 2 /* numPlans */);
 
         mSummaryPreference.onBindViewHolder(mHolder);
         assertThat(mSummaryPreference.getUsageTitle(mHolder).getVisibility())
@@ -259,8 +216,7 @@
     public void testSetUsageInfo_cycleRemainingTimeIsLessOneDay() {
         // just under one day
         final long cycleEnd = System.currentTimeMillis() + TimeUnit.HOURS.toMillis(23);
-        mSummaryPreference.setUsageInfo(cycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
-                new Intent());
+        mSummaryPreference.setUsageInfo(cycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */);
 
         mSummaryPreference.onBindViewHolder(mHolder);
         assertThat(mSummaryPreference.getCycleTime(mHolder).getVisibility())
@@ -273,8 +229,7 @@
     @Test
     public void testSetUsageInfo_cycleRemainingTimeNegativeDaysLeft_shouldDisplayNoneLeft() {
         final long cycleEnd = System.currentTimeMillis() - 1L;
-        mSummaryPreference.setUsageInfo(cycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
-                new Intent());
+        mSummaryPreference.setUsageInfo(cycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */);
 
         mSummaryPreference.onBindViewHolder(mHolder);
         assertThat(mSummaryPreference.getCycleTime(mHolder).getVisibility())
@@ -288,8 +243,7 @@
         final int daysLeft = 3;
         final long cycleEnd = System.currentTimeMillis() + TimeUnit.DAYS.toMillis(daysLeft)
                 + TimeUnit.HOURS.toMillis(1);
-        mSummaryPreference.setUsageInfo(cycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
-                new Intent());
+        mSummaryPreference.setUsageInfo(cycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */);
 
         mSummaryPreference.onBindViewHolder(mHolder);
         assertThat(mSummaryPreference.getCycleTime(mHolder).getVisibility())
@@ -372,8 +326,7 @@
 
     @Test
     public void testSetUsageAndRemainingInfo_withUsageInfo_dataUsageAndRemainingShown() {
-        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 1 /* numPlans */,
-                new Intent());
+        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 1 /* numPlans */);
         mSummaryPreference.setUsageNumbers(
                 BillingCycleSettings.MIB_IN_BYTES,
                 10 * BillingCycleSettings.MIB_IN_BYTES,
@@ -393,8 +346,7 @@
 
     @Test
     public void testSetUsageInfo_withDataOverusage() {
-        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 1 /* numPlans */,
-                new Intent());
+        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 1 /* numPlans */);
         mSummaryPreference.setUsageNumbers(
                 11 * BillingCycleSettings.MIB_IN_BYTES,
                 10 * BillingCycleSettings.MIB_IN_BYTES,
@@ -412,8 +364,7 @@
 
     @Test
     public void testSetUsageInfo_withUsageInfo_dataUsageShown() {
-        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
-                new Intent());
+        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */);
         mSummaryPreference.setUsageNumbers(
                 BillingCycleSettings.MIB_IN_BYTES, -1L, true /* hasMobileData */);
 
@@ -424,42 +375,12 @@
     }
 
     @Test
-    public void testSetAppIntent_toMdpApp_intentCorrect() {
-        final Intent intent = new Intent(SubscriptionManager.ACTION_MANAGE_SUBSCRIPTION_PLANS);
-        intent.setPackage("test-owner.example.com");
-        intent.putExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX, 42);
-
-        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
-                intent);
-
-        mSummaryPreference.onBindViewHolder(mHolder);
-        assertThat(mSummaryPreference.getLaunchButton(mHolder).getVisibility())
-                .isEqualTo(View.VISIBLE);
-        assertThat(mSummaryPreference.getLaunchButton(mHolder).getText())
-                .isEqualTo(ResourcesUtils.getResourcesString(mContext, "launch_mdp_app_text"));
-
-        doNothing().when(mContext).startActivity(any(Intent.class));
-        mSummaryPreference.getLaunchButton(mHolder).callOnClick();
-        final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(
-                Intent.class);
-        verify(mContext).startActivity(intentCaptor.capture());
-        final Intent startedIntent = intentCaptor.getValue();
-
-        assertThat(startedIntent.getAction())
-                .isEqualTo(SubscriptionManager.ACTION_MANAGE_SUBSCRIPTION_PLANS);
-        assertThat(startedIntent.getPackage()).isEqualTo("test-owner.example.com");
-        assertThat(startedIntent.getIntExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX, -1))
-                .isEqualTo(42);
-    }
-
-    @Test
     public void testSetUsageInfo_withOverflowStrings_dataRemainingNotShown() {
         LayoutInflater inflater = LayoutInflater.from(mContext);
         View view = inflater.inflate(mSummaryPreference.getLayoutResource(), null /* root */,
                 false /* attachToRoot */);
 
-        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 1 /* numPlans */,
-                new Intent());
+        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 1 /* numPlans */);
         mSummaryPreference.setUsageNumbers(
                 BillingCycleSettings.MIB_IN_BYTES,
                 10 * BillingCycleSettings.MIB_IN_BYTES,
@@ -493,79 +414,4 @@
         // TODO(b/175389659): re-enable this line once cuttlefish device specs are verified.
         // assertThat(dataRemaining.getVisibility()).isEqualTo(View.GONE);
     }
-
-    @Test
-    public void testSetWifiMode_withUsageInfo_dataUsageShown() {
-        final int daysLeft = 3;
-        final long cycleEnd = System.currentTimeMillis() + TimeUnit.DAYS.toMillis(daysLeft)
-                + TimeUnit.HOURS.toMillis(1);
-        mSummaryPreference.setUsageInfo(cycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
-                new Intent());
-        mSummaryPreference.setUsageNumbers(1000000L, -1L, true);
-        final String cycleText = "The quick fox";
-        mSummaryPreference.setWifiMode(true /* isWifiMode */, cycleText, false /* isSingleWifi */);
-        doReturn(200L).when(mSummaryPreference).getHistoricalUsageLevel();
-
-        mSummaryPreference.onBindViewHolder(mHolder);
-        assertThat(mSummaryPreference.getUsageTitle(mHolder).getText().toString())
-                .isEqualTo(ResourcesUtils.getResourcesString(mContext, "data_usage_wifi_title"));
-        assertThat(mSummaryPreference.getUsageTitle(mHolder).getVisibility())
-                .isEqualTo(View.VISIBLE);
-        assertThat(mSummaryPreference.getCycleTime(mHolder).getVisibility())
-                .isEqualTo(View.VISIBLE);
-        assertThat(mSummaryPreference.getCycleTime(mHolder).getText()).isEqualTo(cycleText);
-        assertThat(mSummaryPreference.getCarrierInfo(mHolder).getVisibility()).isEqualTo(View.GONE);
-        assertThat(mSummaryPreference.getDataLimits(mHolder).getVisibility()).isEqualTo(View.GONE);
-        assertThat(mSummaryPreference.getLaunchButton(mHolder).getVisibility())
-                .isEqualTo(View.VISIBLE);
-        assertThat(mSummaryPreference.getLaunchButton(mHolder).getText())
-                .isEqualTo(ResourcesUtils.getResourcesString(mContext, "launch_wifi_text"));
-
-        doNothing().when(mContext).startActivity(any(Intent.class));
-        mSummaryPreference.getLaunchButton(mHolder).callOnClick();
-
-        final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(
-                Intent.class);
-        verify(mContext).startActivity(intentCaptor.capture());
-        final Intent startedIntent = intentCaptor.getValue();
-
-        final Bundle expect = new Bundle(1);
-        expect.putParcelable(DataUsageList.EXTRA_NETWORK_TEMPLATE,
-                new NetworkTemplate.Builder(NetworkTemplate.MATCH_WIFI).build());
-        final Bundle actual = startedIntent
-                .getBundleExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS);
-        assertThat((NetworkTemplate) actual.getParcelable(DataUsageList.EXTRA_NETWORK_TEMPLATE))
-                .isEqualTo(new NetworkTemplate.Builder(NetworkTemplate.MATCH_WIFI).build());
-
-        assertThat(startedIntent.getIntExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RESID, 0))
-                .isEqualTo(ResourcesUtils.getResourcesId(mContext, "string", "wifi_data_usage"));
-    }
-
-    @UiThreadTest
-    @Test
-    public void testSetWifiMode_noUsageInfo_shouldDisableLaunchButton() {
-        mSummaryPreference.setWifiMode(true /* isWifiMode */, "Test cycle text",
-                false /* isSingleWifi */);
-        doReturn(0L).when(mSummaryPreference).getHistoricalUsageLevel();
-
-        mSummaryPreference.onBindViewHolder(mHolder);
-
-        assertThat(mSummaryPreference.getLaunchButton(mHolder).isEnabled()).isFalse();
-    }
-
-    @Test
-    public void launchWifiDataUsage_shouldSetWifiNetworkTypeInIntentExtra() {
-        doNothing().when(mContext).startActivity(any(Intent.class));
-        mSummaryPreference.launchWifiDataUsage(mContext);
-
-        final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(
-                Intent.class);
-        verify(mContext).startActivity(intentCaptor.capture());
-        final Intent launchIntent = intentCaptor.getValue();
-        final Bundle args =
-                launchIntent.getBundleExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS);
-
-        assertThat(args.getInt(DataUsageList.EXTRA_NETWORK_TYPE))
-            .isEqualTo(ConnectivityManager.TYPE_WIFI);
-    }
 }
diff --git a/tests/unit/src/com/android/settings/privatespace/DeletePrivateSpaceControllerTest.java b/tests/unit/src/com/android/settings/privatespace/DeletePrivateSpaceControllerTest.java
new file mode 100644
index 0000000..8fb3eae
--- /dev/null
+++ b/tests/unit/src/com/android/settings/privatespace/DeletePrivateSpaceControllerTest.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.privatespace;
+
+import static com.android.settings.core.BasePreferenceController.AVAILABLE;
+import static com.android.settings.privatespace.PrivateSpaceMaintainer.ErrorDeletingPrivateSpace.DELETE_PS_ERROR_INTERNAL;
+import static com.android.settings.privatespace.PrivateSpaceMaintainer.ErrorDeletingPrivateSpace.DELETE_PS_ERROR_NONE;
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.verify;
+
+import android.content.Context;
+
+import androidx.preference.Preference;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class DeletePrivateSpaceControllerTest {
+    @Mock private PrivateSpaceMaintainer mPrivateSpaceMaintainer;
+    @Mock private Context mContext;
+
+    private Preference mPreference;
+    private DeletePrivateSpaceController mDeletePrivateSpaceController;
+
+    /** Required setup before a test. */
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = ApplicationProvider.getApplicationContext();
+        final String preferenceKey = "private_space_delete";
+
+        mPreference = new Preference(ApplicationProvider.getApplicationContext());
+        mPreference.setKey(preferenceKey);
+
+        mDeletePrivateSpaceController =
+                new DeletePrivateSpaceController(
+                        mContext,
+                        preferenceKey,
+                        new DeletePrivateSpaceController.Injector() {
+                            @Override
+                            PrivateSpaceMaintainer injectPrivateSpaceMaintainer(Context context) {
+                                return mPrivateSpaceMaintainer;
+                            }
+                        });
+    }
+
+    /** Tests that the controller is always available. */
+    @Test
+    public void getAvailabilityStatus_returnsAvailable() {
+        assertThat(mDeletePrivateSpaceController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    /** Tests that on click it attempts to delete the PS. */
+    @Test
+    public void handlePreferenceTreeClick_attemptsToDeletePrivateSpace() {
+        doReturn(DELETE_PS_ERROR_NONE).when(mPrivateSpaceMaintainer).deletePrivateSpace();
+        DeletePrivateSpaceController spy = Mockito.spy(mDeletePrivateSpaceController);
+        doNothing().when(spy).showSuccessfulDeletionToast();
+        spy.handlePreferenceTreeClick(mPreference);
+
+        verify(mPrivateSpaceMaintainer).deletePrivateSpace();
+    }
+
+    /** Tests that on deletion of PS relevant toast is shown. */
+    @Test
+    public void handlePreferenceTreeClick_onDeletion_showsDeletedToast() {
+        doReturn(DELETE_PS_ERROR_NONE).when(mPrivateSpaceMaintainer).deletePrivateSpace();
+        DeletePrivateSpaceController spy = Mockito.spy(mDeletePrivateSpaceController);
+        doNothing().when(spy).showSuccessfulDeletionToast();
+        spy.handlePreferenceTreeClick(mPreference);
+
+        verify(spy).showSuccessfulDeletionToast();
+    }
+
+    /** Tests that on failing to delete the PS relevant toast is shown. */
+    @Test
+    public void handlePreferenceTreeClick_onDeletionError_showsDeletionFailedToast() {
+        doReturn(DELETE_PS_ERROR_INTERNAL).when(mPrivateSpaceMaintainer).deletePrivateSpace();
+        DeletePrivateSpaceController spy = Mockito.spy(mDeletePrivateSpaceController);
+        doNothing().when(spy).showDeletionInternalErrorToast();
+        spy.handlePreferenceTreeClick(mPreference);
+
+        verify(spy).showDeletionInternalErrorToast();
+    }
+}
diff --git a/tests/unit/src/com/android/settings/privatespace/HidePrivateSpaceControllerTest.java b/tests/unit/src/com/android/settings/privatespace/HidePrivateSpaceControllerTest.java
new file mode 100644
index 0000000..1a1769e
--- /dev/null
+++ b/tests/unit/src/com/android/settings/privatespace/HidePrivateSpaceControllerTest.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.privatespace;
+
+import static com.android.settings.core.BasePreferenceController.AVAILABLE;
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+
+@RunWith(AndroidJUnit4.class)
+public class HidePrivateSpaceControllerTest {
+    @Mock private Context mContext;
+    private HidePrivateSpaceController mHidePrivateSpaceController;
+
+    /** Required setup before a test. */
+    @Before
+    public void setUp() {
+        mContext = ApplicationProvider.getApplicationContext();
+        final String preferenceKey = "private_space_hidden";
+
+        mHidePrivateSpaceController = new HidePrivateSpaceController(mContext, preferenceKey);
+    }
+
+    /** Tests that the controller is always available. */
+    @Test
+    public void getAvailabilityStatus_returnsAvailable() {
+        assertThat(mHidePrivateSpaceController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+}
diff --git a/tests/unit/src/com/android/settings/privatespace/PrivateSpaceSafetySourceTest.java b/tests/unit/src/com/android/settings/privatespace/PrivateSpaceSafetySourceTest.java
new file mode 100644
index 0000000..2dc00e1
--- /dev/null
+++ b/tests/unit/src/com/android/settings/privatespace/PrivateSpaceSafetySourceTest.java
@@ -0,0 +1,143 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.privatespace;
+
+
+import static android.safetycenter.SafetyEvent.SAFETY_EVENT_TYPE_DEVICE_REBOOTED;
+import static com.android.settings.privatespace.PrivateSpaceSafetySource.SAFETY_SOURCE_ID;
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.safetycenter.SafetyEvent;
+import android.safetycenter.SafetySourceData;
+import android.safetycenter.SafetySourceStatus;
+import android.util.FeatureFlagUtils;
+
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.settings.safetycenter.SafetyCenterManagerWrapper;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class PrivateSpaceSafetySourceTest {
+    private static final SafetyEvent EVENT_TYPE_DEVICE_REBOOTED =
+            new SafetyEvent.Builder(SAFETY_EVENT_TYPE_DEVICE_REBOOTED).build();
+    private Context mContext = ApplicationProvider.getApplicationContext();
+    @Mock private SafetyCenterManagerWrapper mSafetyCenterManagerWrapper;
+
+    /** Required setup before a test. */
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        SafetyCenterManagerWrapper.sInstance = mSafetyCenterManagerWrapper;
+
+        FeatureFlagUtils
+                .setEnabled(mContext, FeatureFlagUtils.SETTINGS_PRIVATE_SPACE_SETTINGS, true);
+    }
+
+    /** Required setup after a test. */
+    @After
+    public void tearDown() {
+        SafetyCenterManagerWrapper.sInstance = null;
+    }
+
+    /** Tests that when SC is disabled we don't set any data. */
+    @Test
+    public void onDeviceRebootedEvent_whenSafetyCenterDisabled_doesNotSetData() {
+        when(mSafetyCenterManagerWrapper.isEnabled(mContext)).thenReturn(false);
+
+        PrivateSpaceSafetySource.setSafetySourceData(mContext, EVENT_TYPE_DEVICE_REBOOTED);
+
+        verify(mSafetyCenterManagerWrapper, never()).setSafetySourceData(
+                any(), any(), any(), any());
+    }
+
+    /** Tests that when SC is enabled we set data. */
+    @Test
+    public void onDeviceRebootedEvent_whenSafetyCenterEnabled_setsData() {
+        when(mSafetyCenterManagerWrapper.isEnabled(mContext)).thenReturn(true);
+
+        PrivateSpaceSafetySource.setSafetySourceData(mContext, EVENT_TYPE_DEVICE_REBOOTED);
+
+        verify(mSafetyCenterManagerWrapper).setSafetySourceData(
+                any(), eq(SAFETY_SOURCE_ID), any(), eq(EVENT_TYPE_DEVICE_REBOOTED));
+    }
+
+    // TODO(b/295516544): Modify this test for the new trunk stable flag instead when available.
+    /** Tests that when the feature is disabled null data is set. */
+    @Test
+    public void setSafetySourceData_whenFeatureDisabled_setsNullData() {
+        when(mSafetyCenterManagerWrapper.isEnabled(mContext)).thenReturn(true);
+        FeatureFlagUtils
+                .setEnabled(mContext, FeatureFlagUtils.SETTINGS_PRIVATE_SPACE_SETTINGS, false);
+
+        PrivateSpaceSafetySource.setSafetySourceData(mContext, EVENT_TYPE_DEVICE_REBOOTED);
+
+        ArgumentCaptor<SafetySourceData> captor = ArgumentCaptor.forClass(SafetySourceData.class);
+        verify(mSafetyCenterManagerWrapper).setSafetySourceData(
+                any(), eq(SAFETY_SOURCE_ID), captor.capture(), eq(EVENT_TYPE_DEVICE_REBOOTED));
+        SafetySourceData safetySourceData = captor.getValue();
+        assertThat(safetySourceData).isNull();
+
+        FeatureFlagUtils
+                .setEnabled(mContext, FeatureFlagUtils.SETTINGS_PRIVATE_SPACE_SETTINGS, true);
+    }
+
+    /** Tests that setSafetySourceData sets the source status enabled. */
+    @Test
+    public void setSafetySourceData_setsEnabled() {
+        when(mSafetyCenterManagerWrapper.isEnabled(mContext)).thenReturn(true);
+
+        PrivateSpaceSafetySource.setSafetySourceData(mContext, EVENT_TYPE_DEVICE_REBOOTED);
+
+        ArgumentCaptor<SafetySourceData> captor = ArgumentCaptor.forClass(SafetySourceData.class);
+        verify(mSafetyCenterManagerWrapper).setSafetySourceData(
+                any(), eq(SAFETY_SOURCE_ID), captor.capture(), eq(EVENT_TYPE_DEVICE_REBOOTED));
+        SafetySourceData safetySourceData = captor.getValue();
+        SafetySourceStatus safetySourceStatus = safetySourceData.getStatus();
+        assertThat(safetySourceStatus.isEnabled()).isTrue();
+    }
+
+    /** Tests that setSafetySourceData sets the PS settings page intent. */
+    @Test
+    public void setSafetySourceData_setsPsIntent() {
+        when(mSafetyCenterManagerWrapper.isEnabled(mContext)).thenReturn(true);
+
+        PrivateSpaceSafetySource.setSafetySourceData(mContext, EVENT_TYPE_DEVICE_REBOOTED);
+
+        ArgumentCaptor<SafetySourceData> captor = ArgumentCaptor.forClass(SafetySourceData.class);
+        verify(mSafetyCenterManagerWrapper).setSafetySourceData(
+                any(), eq(SAFETY_SOURCE_ID), captor.capture(), eq(EVENT_TYPE_DEVICE_REBOOTED));
+        SafetySourceData safetySourceData = captor.getValue();
+        SafetySourceStatus safetySourceStatus = safetySourceData.getStatus();
+        assertThat(safetySourceStatus.getPendingIntent().getIntent().getIdentifier())
+                .isEqualTo(SAFETY_SOURCE_ID);
+    }
+}
diff --git a/tests/unit/src/com/android/settings/privatespace/UseOneLockControllerTest.java b/tests/unit/src/com/android/settings/privatespace/UseOneLockControllerTest.java
new file mode 100644
index 0000000..e7ebb37
--- /dev/null
+++ b/tests/unit/src/com/android/settings/privatespace/UseOneLockControllerTest.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.privatespace;
+
+import static com.android.settings.core.BasePreferenceController.AVAILABLE;
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+
+@RunWith(AndroidJUnit4.class)
+public class UseOneLockControllerTest {
+    @Mock private Context mContext;
+    private UseOneLockController mUseOneLockController;
+
+    /** Required setup before a test. */
+    @Before
+    public void setUp() {
+        mContext = ApplicationProvider.getApplicationContext();
+        final String preferenceKey = "private_space_use_one_lock";
+
+        mUseOneLockController = new UseOneLockController(mContext, preferenceKey);
+    }
+
+    /** Tests that the controller is always available. */
+    @Test
+    public void getAvailabilityStatus_returnsAvailable() {
+        assertThat(mUseOneLockController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+}
diff --git a/tests/unit/src/com/android/settings/safetycenter/SafetySourceBroadcastReceiverTest.java b/tests/unit/src/com/android/settings/safetycenter/SafetySourceBroadcastReceiverTest.java
index 3ad1874..caae44a 100644
--- a/tests/unit/src/com/android/settings/safetycenter/SafetySourceBroadcastReceiverTest.java
+++ b/tests/unit/src/com/android/settings/safetycenter/SafetySourceBroadcastReceiverTest.java
@@ -21,9 +21,7 @@
 import static android.safetycenter.SafetyCenterManager.EXTRA_REFRESH_SAFETY_SOURCE_IDS;
 import static android.safetycenter.SafetyEvent.SAFETY_EVENT_TYPE_DEVICE_REBOOTED;
 import static android.safetycenter.SafetyEvent.SAFETY_EVENT_TYPE_REFRESH_REQUESTED;
-
 import static com.google.common.truth.Truth.assertThat;
-
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.times;
@@ -33,11 +31,14 @@
 import android.content.Context;
 import android.content.Intent;
 import android.safetycenter.SafetyEvent;
+import android.safetycenter.SafetySourceData;
+import android.util.FeatureFlagUtils;
 
 import androidx.test.core.app.ApplicationProvider;
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 
 import com.android.internal.widget.LockPatternUtils;
+import com.android.settings.privatespace.PrivateSpaceSafetySource;
 import com.android.settings.testutils.FakeFeatureFactory;
 
 import org.junit.After;
@@ -216,6 +217,62 @@
         assertThat(captor.getValue()).isEqualTo(BiometricsSafetySource.SAFETY_SOURCE_ID);
     }
 
+    /**
+     *  Tests that on receiving the refresh broadcast request with the PS source id, the PS data
+     * is set.
+     */
+    @Test
+    public void onReceive_onRefresh_withPrivateSpaceSourceId_setsPrivateSpaceData() {
+        when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true);
+        Intent intent =
+                new Intent()
+                        .setAction(ACTION_REFRESH_SAFETY_SOURCES)
+                        .putExtra(
+                                EXTRA_REFRESH_SAFETY_SOURCE_IDS,
+                                new String[] {PrivateSpaceSafetySource.SAFETY_SOURCE_ID})
+                        .putExtra(EXTRA_REFRESH_SAFETY_SOURCES_BROADCAST_ID, REFRESH_BROADCAST_ID);
+
+        new SafetySourceBroadcastReceiver().onReceive(mApplicationContext, intent);
+        ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
+        verify(mSafetyCenterManagerWrapper, times(1))
+                .setSafetySourceData(any(), captor.capture(), any(), any());
+
+        assertThat(captor.getValue()).isEqualTo(PrivateSpaceSafetySource.SAFETY_SOURCE_ID);
+    }
+
+    /** Tests that the PS source sets null data when it's disabled. */
+    // TODO(b/295516544): Modify this test for the new trunk stable flag instead when available.
+    @Test
+    public void onReceive_onRefresh_withPrivateSpaceFeatureDisabled_setsNullData() {
+        when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true);
+        FeatureFlagUtils
+                .setEnabled(
+                        mApplicationContext,
+                        FeatureFlagUtils.SETTINGS_PRIVATE_SPACE_SETTINGS,
+                        false);
+
+        Intent intent =
+                new Intent()
+                        .setAction(ACTION_REFRESH_SAFETY_SOURCES)
+                        .putExtra(
+                                EXTRA_REFRESH_SAFETY_SOURCE_IDS,
+                                new String[] {PrivateSpaceSafetySource.SAFETY_SOURCE_ID})
+                        .putExtra(EXTRA_REFRESH_SAFETY_SOURCES_BROADCAST_ID, REFRESH_BROADCAST_ID);
+
+        new SafetySourceBroadcastReceiver().onReceive(mApplicationContext, intent);
+        ArgumentCaptor<SafetySourceData> captor = ArgumentCaptor.forClass(SafetySourceData.class);
+        verify(mSafetyCenterManagerWrapper, times(1))
+                .setSafetySourceData(any(), any(), captor.capture(), any());
+
+        assertThat(captor.getValue()).isEqualTo(null);
+
+        FeatureFlagUtils
+                .setEnabled(
+                        mApplicationContext,
+                        FeatureFlagUtils.SETTINGS_PRIVATE_SPACE_SETTINGS,
+                        true);
+    }
+
     @Test
     public void onReceive_onBootCompleted_setsBootCompleteEvent() {
         when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true);
@@ -223,22 +280,22 @@
 
         new SafetySourceBroadcastReceiver().onReceive(mApplicationContext, intent);
         ArgumentCaptor<SafetyEvent> captor = ArgumentCaptor.forClass(SafetyEvent.class);
-        verify(mSafetyCenterManagerWrapper, times(2))
+        verify(mSafetyCenterManagerWrapper, times(3))
                 .setSafetySourceData(any(), any(), any(), captor.capture());
 
         SafetyEvent bootEvent = new SafetyEvent.Builder(SAFETY_EVENT_TYPE_DEVICE_REBOOTED).build();
         assertThat(captor.getAllValues())
-                .containsExactlyElementsIn(Arrays.asList(bootEvent, bootEvent));
+                .containsExactlyElementsIn(Arrays.asList(bootEvent, bootEvent, bootEvent));
     }
 
     @Test
-    public void onReceive_onBootCompleted_sendsBiometricAndLockscreenData() {
+    public void onReceive_onBootCompleted_sendsAllSafetySourcesData() {
         when(mSafetyCenterManagerWrapper.isEnabled(mApplicationContext)).thenReturn(true);
         Intent intent = new Intent().setAction(Intent.ACTION_BOOT_COMPLETED);
 
         new SafetySourceBroadcastReceiver().onReceive(mApplicationContext, intent);
         ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
-        verify(mSafetyCenterManagerWrapper, times(2))
+        verify(mSafetyCenterManagerWrapper, times(3))
                 .setSafetySourceData(any(), captor.capture(), any(), any());
         List<String> safetySourceIdList = captor.getAllValues();
 
@@ -246,5 +303,7 @@
                 id -> id.equals(LockScreenSafetySource.SAFETY_SOURCE_ID))).isTrue();
         assertThat(safetySourceIdList.stream().anyMatch(
                 id -> id.equals(BiometricsSafetySource.SAFETY_SOURCE_ID))).isTrue();
+        assertThat(safetySourceIdList.stream().anyMatch(
+                id -> id.equals(PrivateSpaceSafetySource.SAFETY_SOURCE_ID))).isTrue();
     }
 }