Remove custom robotest utils in favor of framework support.

Bug: 111195450
Fixes: 111195167
Test: robotests
Change-Id: I8bea43fd86f9ae5ce40eb16dabf733b0fbe89aae
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/PrivateVolumeForgetTest.java b/tests/robotests/src/com/android/settings/deviceinfo/PrivateVolumeForgetTest.java
index fad75c3..768a9ea 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/PrivateVolumeForgetTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/PrivateVolumeForgetTest.java
@@ -28,7 +28,6 @@
 
 import com.android.settings.R;
 import com.android.settings.deviceinfo.PrivateVolumeForget.ForgetConfirmFragment;
-import com.android.settings.testutils.Robolectric;
 import com.android.settings.testutils.SettingsRobolectricTestRunner;
 import com.android.settings.testutils.shadow.SettingsShadowResourcesImpl;
 import com.android.settings.testutils.shadow.ShadowStorageManager;
@@ -38,6 +37,7 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.robolectric.annotation.Config;
+import org.robolectric.shadows.androidx.fragment.FragmentController;
 
 @RunWith(SettingsRobolectricTestRunner.class)
 @Config(shadows = {ShadowStorageManager.class, SettingsShadowResourcesImpl.class})
@@ -50,8 +50,12 @@
     public void setUp() {
         final Bundle bundle = new Bundle();
         bundle.putString(VolumeRecord.EXTRA_FS_UUID, "id");
-        mFragment = Robolectric.buildFragment(PrivateVolumeForget.class,
-                bundle).create().start().resume().get();
+        mFragment = FragmentController.of(new PrivateVolumeForget(), bundle)
+                .create()
+                .start()
+                .resume()
+                .visible()
+                .get();
         mActivity = mFragment.getActivity();
     }
 
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/PrivateVolumeFormatTest.java b/tests/robotests/src/com/android/settings/deviceinfo/PrivateVolumeFormatTest.java
index 0d720e3..81c52c5 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/PrivateVolumeFormatTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/PrivateVolumeFormatTest.java
@@ -25,7 +25,6 @@
 import android.widget.Button;
 
 import com.android.settings.R;
-import com.android.settings.testutils.Robolectric;
 import com.android.settings.testutils.SettingsRobolectricTestRunner;
 import com.android.settings.testutils.shadow.ShadowStorageManager;
 
@@ -36,6 +35,7 @@
 import org.robolectric.Shadows;
 import org.robolectric.annotation.Config;
 import org.robolectric.shadows.ShadowActivity;
+import org.robolectric.shadows.androidx.fragment.FragmentController;
 
 
 @RunWith(SettingsRobolectricTestRunner.class)
@@ -49,8 +49,12 @@
     public void setUp() {
         final Bundle bundle = new Bundle();
         bundle.putString(VolumeInfo.EXTRA_VOLUME_ID, "id");
-        mFragment = Robolectric.buildFragment(PrivateVolumeFormat.class,
-                bundle).create().start().resume().get();
+        mFragment = FragmentController.of(new PrivateVolumeFormat(), bundle)
+                .create()
+                .start()
+                .resume()
+                .visible()
+                .get();
         mShadowActivity = Shadows.shadowOf(mFragment.getActivity());
     }
 
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/PrivateVolumeUnmountTest.java b/tests/robotests/src/com/android/settings/deviceinfo/PrivateVolumeUnmountTest.java
index 94f5286..65f24e3 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/PrivateVolumeUnmountTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/PrivateVolumeUnmountTest.java
@@ -23,7 +23,6 @@
 import android.widget.Button;
 
 import com.android.settings.R;
-import com.android.settings.testutils.Robolectric;
 import com.android.settings.testutils.SettingsRobolectricTestRunner;
 import com.android.settings.testutils.shadow.ShadowStorageManager;
 
@@ -32,6 +31,7 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.robolectric.annotation.Config;
+import org.robolectric.shadows.androidx.fragment.FragmentController;
 
 
 @RunWith(SettingsRobolectricTestRunner.class)
@@ -44,8 +44,12 @@
     public void setUp() {
         Bundle bundle = new Bundle();
         bundle.putString(VolumeInfo.EXTRA_VOLUME_ID, "id");
-        mFragment = Robolectric.buildFragment(PrivateVolumeUnmount.class,
-                bundle).create().start().resume().get();
+        mFragment = FragmentController.of(new PrivateVolumeUnmount(), bundle)
+                .create()
+                .start()
+                .resume()
+                .visible()
+                .get();
     }
 
     @After
@@ -57,7 +61,7 @@
     public void OnClickListener_shouldCallUnmount() {
         assertThat(ShadowStorageManager.isUnmountCalled()).isFalse();
 
-        Button confirm = (Button) mFragment.getView().findViewById(R.id.confirm);
+        final Button confirm = mFragment.getView().findViewById(R.id.confirm);
 
         confirm.performClick();
 
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/deviceinfo/DeviceNameWarningDialogTest.java b/tests/robotests/src/com/android/settings/deviceinfo/deviceinfo/DeviceNameWarningDialogTest.java
index 9e1400b..0be0ac2 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/deviceinfo/DeviceNameWarningDialogTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/deviceinfo/DeviceNameWarningDialogTest.java
@@ -1,7 +1,6 @@
 package com.android.settings.deviceinfo.deviceinfo;
 
 import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
 
@@ -9,12 +8,11 @@
 
 import com.android.settings.deviceinfo.aboutphone.DeviceNameWarningDialog;
 import com.android.settings.deviceinfo.aboutphone.MyDeviceInfoFragment;
-import com.android.settings.testutils.FragmentController;
-import com.android.settings.testutils.Robolectric;
 import com.android.settings.testutils.SettingsRobolectricTestRunner;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.robolectric.shadows.androidx.fragment.FragmentController;
 
 @RunWith(SettingsRobolectricTestRunner.class)
 public class DeviceNameWarningDialogTest {
@@ -23,7 +21,7 @@
     @Test
     public void onClick_okSetsName() {
         final FragmentController<DeviceNameWarningDialog> fragmentController =
-                Robolectric.buildFragment(DeviceNameWarningDialog.class);
+                FragmentController.of(new DeviceNameWarningDialog());
         final DeviceNameWarningDialog fragment = spy(fragmentController.get());
         final MyDeviceInfoFragment deviceInfoFragment = mock(MyDeviceInfoFragment.class);
         fragment.setTargetFragment(deviceInfoFragment, 0);
@@ -36,7 +34,7 @@
     @Test
     public void onClick_cancelDoesNothing() {
         final FragmentController<DeviceNameWarningDialog> fragmentController =
-                Robolectric.buildFragment(DeviceNameWarningDialog.class);
+                FragmentController.of(new DeviceNameWarningDialog());
         final DeviceNameWarningDialog fragment = spy(fragmentController.get());
         final MyDeviceInfoFragment deviceInfoFragment = mock(MyDeviceInfoFragment.class);
         fragment.setTargetFragment(deviceInfoFragment, 0);
diff --git a/tests/robotests/src/com/android/settings/network/ApnEditorTest.java b/tests/robotests/src/com/android/settings/network/ApnEditorTest.java
index 69d8638..cc480c3 100644
--- a/tests/robotests/src/com/android/settings/network/ApnEditorTest.java
+++ b/tests/robotests/src/com/android/settings/network/ApnEditorTest.java
@@ -44,7 +44,6 @@
 
 import com.android.settings.R;
 import com.android.settings.network.ApnEditor.ApnData;
-import com.android.settings.testutils.Robolectric;
 import com.android.settings.testutils.SettingsRobolectricTestRunner;
 
 import org.junit.Before;
@@ -55,6 +54,7 @@
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
+import org.robolectric.Robolectric;
 
 @RunWith(SettingsRobolectricTestRunner.class)
 public class ApnEditorTest {
diff --git a/tests/robotests/src/com/android/settings/security/ConfigureKeyGuardDialogTest.java b/tests/robotests/src/com/android/settings/security/ConfigureKeyGuardDialogTest.java
index b7ff79c..fe7c559 100644
--- a/tests/robotests/src/com/android/settings/security/ConfigureKeyGuardDialogTest.java
+++ b/tests/robotests/src/com/android/settings/security/ConfigureKeyGuardDialogTest.java
@@ -22,12 +22,11 @@
 
 import android.content.DialogInterface;
 
-import com.android.settings.testutils.FragmentController;
-import com.android.settings.testutils.Robolectric;
 import com.android.settings.testutils.SettingsRobolectricTestRunner;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.robolectric.shadows.androidx.fragment.FragmentController;
 
 
 @RunWith(SettingsRobolectricTestRunner.class)
@@ -36,7 +35,7 @@
     @Test
     public void displayDialog_clickPositiveButton_launchSetNewPassword() {
         final FragmentController<ConfigureKeyGuardDialog> fragmentController =
-                Robolectric.buildFragment(ConfigureKeyGuardDialog.class);
+                FragmentController.of(new ConfigureKeyGuardDialog());
         final ConfigureKeyGuardDialog fragment = spy(fragmentController.get());
         doNothing().when(fragment).startPasswordSetup();
         fragmentController.create().start().resume();
diff --git a/tests/robotests/src/com/android/settings/testutils/FragmentController.java b/tests/robotests/src/com/android/settings/testutils/FragmentController.java
deleted file mode 100644
index 63c68b1..0000000
--- a/tests/robotests/src/com/android/settings/testutils/FragmentController.java
+++ /dev/null
@@ -1,210 +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.testutils;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.widget.LinearLayout;
-
-import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentActivity;
-
-import org.robolectric.android.controller.ActivityController;
-import org.robolectric.android.controller.ComponentController;
-import org.robolectric.util.ReflectionHelpers;
-
-/**
- * Controller class for driving fragment lifecycles, similar to {@link ActivityController}.
- */
-// TODO(b/111195167) - Duplicated from org.robolectric.android.controller.FragmentController.
-@Deprecated
-public class FragmentController<F extends Fragment> extends
-        ComponentController<FragmentController<F>, F> {
-    private final F fragment;
-    private final ActivityController<? extends FragmentActivity> activityController;
-
-    public static <F extends Fragment> FragmentController<F> of(F fragment) {
-        return of(fragment, FragmentControllerActivity.class, null, null);
-    }
-
-    public static <F extends Fragment> FragmentController<F> of(F fragment,
-            Class<? extends FragmentActivity> activityClass) {
-        return of(fragment, activityClass, null, null);
-    }
-
-    public static <F extends Fragment> FragmentController<F> of(F fragment, Intent intent) {
-        return new FragmentController<>(fragment, FragmentControllerActivity.class, intent);
-    }
-
-    public static <F extends Fragment> FragmentController<F> of(F fragment, Bundle arguments) {
-        return new FragmentController<>(fragment, FragmentControllerActivity.class, arguments);
-    }
-
-    public static <F extends Fragment> FragmentController<F> of(F fragment, Intent intent,
-            Bundle arguments) {
-        return new FragmentController<>(fragment, FragmentControllerActivity.class, intent,
-                arguments);
-    }
-
-    public static <F extends Fragment> FragmentController<F> of(F fragment,
-            Class<? extends FragmentActivity> activityClass, Intent intent) {
-        return new FragmentController<>(fragment, activityClass, intent);
-    }
-
-    public static <F extends Fragment> FragmentController<F> of(F fragment,
-            Class<? extends FragmentActivity> activityClass, Bundle arguments) {
-        return new FragmentController<>(fragment, activityClass, arguments);
-    }
-
-    public static <F extends Fragment> FragmentController<F> of(F fragment,
-            Class<? extends FragmentActivity> activityClass,
-            Intent intent, Bundle arguments) {
-        return new FragmentController<>(fragment, activityClass, intent, arguments);
-    }
-
-    private FragmentController(F fragment, Class<? extends FragmentActivity> activityClass,
-            Intent intent) {
-        this(fragment, activityClass, intent, null);
-    }
-
-    private FragmentController(F fragment, Class<? extends FragmentActivity> activityClass,
-            Bundle arguments) {
-        this(fragment, activityClass, null, arguments);
-    }
-
-    private FragmentController(F fragment, Class<? extends FragmentActivity> activityClass,
-            Intent intent, Bundle arguments) {
-        super(fragment, intent);
-        this.fragment = fragment;
-        if (arguments != null) {
-            this.fragment.setArguments(arguments);
-        }
-        this.activityController = ActivityController.of(
-                ReflectionHelpers.callConstructor(activityClass), intent);
-    }
-
-    /**
-     * Creates the activity with {@link Bundle} and adds the fragment to the view with ID {@code
-     * contentViewId}.
-     */
-    public FragmentController<F> create(final int contentViewId, final Bundle bundle) {
-        shadowMainLooper.runPaused(new Runnable() {
-            @Override
-            public void run() {
-                activityController.create(
-                        bundle).get().getSupportFragmentManager().beginTransaction().add(
-                        contentViewId, fragment).commit();
-            }
-        });
-        return this;
-    }
-
-    /**
-     * Creates the activity with {@link Bundle} and adds the fragment to it. Note that the fragment
-     * will be added to the view with ID 1.
-     */
-    public FragmentController<F> create(Bundle bundle) {
-        return create(1, bundle);
-    }
-
-    @Override
-    public FragmentController<F> create() {
-        return create(null);
-    }
-
-    @Override
-    public FragmentController<F> destroy() {
-        shadowMainLooper.runPaused(new Runnable() {
-            @Override
-            public void run() {
-                activityController.destroy();
-            }
-        });
-        return this;
-    }
-
-    public FragmentController<F> start() {
-        shadowMainLooper.runPaused(new Runnable() {
-            @Override
-            public void run() {
-                activityController.start();
-            }
-        });
-        return this;
-    }
-
-    public FragmentController<F> resume() {
-        shadowMainLooper.runPaused(new Runnable() {
-            @Override
-            public void run() {
-                activityController.resume();
-            }
-        });
-        return this;
-    }
-
-    public FragmentController<F> pause() {
-        shadowMainLooper.runPaused(new Runnable() {
-            @Override
-            public void run() {
-                activityController.pause();
-            }
-        });
-        return this;
-    }
-
-    public FragmentController<F> visible() {
-        shadowMainLooper.runPaused(new Runnable() {
-            @Override
-            public void run() {
-                activityController.visible();
-            }
-        });
-        return this;
-    }
-
-    public FragmentController<F> stop() {
-        shadowMainLooper.runPaused(new Runnable() {
-            @Override
-            public void run() {
-                activityController.stop();
-            }
-        });
-        return this;
-    }
-
-    public FragmentController<F> saveInstanceState(final Bundle outState) {
-        shadowMainLooper.runPaused(new Runnable() {
-            @Override
-            public void run() {
-                activityController.saveInstanceState(outState);
-            }
-        });
-        return this;
-    }
-
-    private static class FragmentControllerActivity extends FragmentActivity {
-        @Override
-        protected void onCreate(Bundle savedInstanceState) {
-            super.onCreate(savedInstanceState);
-            LinearLayout view = new LinearLayout(this);
-            view.setId(1);
-
-            setContentView(view);
-        }
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/testutils/Robolectric.java b/tests/robotests/src/com/android/settings/testutils/Robolectric.java
index 549aad8..abda213 100644
--- a/tests/robotests/src/com/android/settings/testutils/Robolectric.java
+++ b/tests/robotests/src/com/android/settings/testutils/Robolectric.java
@@ -17,36 +17,12 @@
 package com.android.settings.testutils;
 
 
-import android.app.IntentService;
-import android.app.Service;
-import android.app.backup.BackupAgent;
-import android.content.ContentProvider;
 import android.content.Intent;
-import android.os.Bundle;
-import android.util.AttributeSet;
-import android.view.View;
 
-import androidx.fragment.app.Fragment;
 import androidx.fragment.app.FragmentActivity;
 
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.android.XmlResourceParserImpl;
 import org.robolectric.android.controller.ActivityController;
-import org.robolectric.android.controller.BackupAgentController;
-import org.robolectric.android.controller.ContentProviderController;
-import org.robolectric.android.controller.IntentServiceController;
-import org.robolectric.android.controller.ServiceController;
-import org.robolectric.res.ResName;
-import org.robolectric.res.ResourceTable;
-import org.robolectric.shadows.ShadowApplication;
 import org.robolectric.util.ReflectionHelpers;
-import org.robolectric.util.Scheduler;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
 
 // TODO(b/111195450) - Duplicated from org.robolectric.Robolectric.
 @Deprecated
@@ -60,51 +36,6 @@
         // No-op- is now handled in the test runner. Users should not be calling this method anyway.
     }
 
-    public static <T extends Service> ServiceController<T> buildService(Class<T> serviceClass) {
-        return buildService(serviceClass, null);
-    }
-
-    public static <T extends Service> ServiceController<T> buildService(Class<T> serviceClass,
-            Intent intent) {
-        return ServiceController.of(ReflectionHelpers.callConstructor(serviceClass), intent);
-    }
-
-    public static <T extends Service> T setupService(Class<T> serviceClass) {
-        return buildService(serviceClass).create().get();
-    }
-
-    public static <T extends IntentService> IntentServiceController<T> buildIntentService(
-            Class<T> serviceClass) {
-        return buildIntentService(serviceClass, null);
-    }
-
-    public static <T extends IntentService> IntentServiceController<T> buildIntentService(
-            Class<T> serviceClass, Intent intent) {
-        return IntentServiceController.of(ReflectionHelpers.callConstructor(serviceClass,
-                new ReflectionHelpers.ClassParameter<String>(String.class, "IntentService")),
-                intent);
-    }
-
-    public static <T extends IntentService> T setupIntentService(Class<T> serviceClass) {
-        return buildIntentService(serviceClass).create().get();
-    }
-
-    public static <T extends ContentProvider> ContentProviderController<T> buildContentProvider(
-            Class<T> contentProviderClass) {
-        return ContentProviderController.of(
-                ReflectionHelpers.callConstructor(contentProviderClass));
-    }
-
-    public static <T extends ContentProvider> T setupContentProvider(
-            Class<T> contentProviderClass) {
-        return buildContentProvider(contentProviderClass).create().get();
-    }
-
-    public static <T extends ContentProvider> T setupContentProvider(Class<T> contentProviderClass,
-            String authority) {
-        return buildContentProvider(contentProviderClass).create(authority).get();
-    }
-
     public static <T extends FragmentActivity> ActivityController<T> buildActivity(
             Class<T> activityClass) {
         return buildActivity(activityClass, null);
@@ -118,161 +49,5 @@
     public static <T extends FragmentActivity> T setupActivity(Class<T> activityClass) {
         return buildActivity(activityClass).setup().get();
     }
-
-    public static <T extends Fragment> FragmentController<T> buildFragment(Class<T> fragmentClass) {
-        return FragmentController.of(ReflectionHelpers.callConstructor(fragmentClass));
-    }
-
-    public static <T extends Fragment> FragmentController<T> buildFragment(Class<T> fragmentClass,
-            Bundle arguments) {
-        return FragmentController.of(ReflectionHelpers.callConstructor(fragmentClass), arguments);
-    }
-
-    public static <T extends Fragment> FragmentController<T> buildFragment(Class<T> fragmentClass,
-            Class<? extends FragmentActivity> activityClass) {
-        return FragmentController.of(ReflectionHelpers.callConstructor(fragmentClass),
-                activityClass);
-    }
-
-    public static <T extends Fragment> FragmentController<T> buildFragment(Class<T> fragmentClass,
-            Intent intent) {
-        return FragmentController.of(ReflectionHelpers.callConstructor(fragmentClass), intent);
-    }
-
-    public static <T extends Fragment> FragmentController<T> buildFragment(Class<T> fragmentClass,
-            Intent intent,
-            Bundle arguments) {
-        return FragmentController.of(ReflectionHelpers.callConstructor(fragmentClass), intent,
-                arguments);
-    }
-
-    public static <T extends Fragment> FragmentController<T> buildFragment(Class<T> fragmentClass,
-            Class<? extends FragmentActivity> activityClass,
-            Intent intent) {
-        return FragmentController.of(ReflectionHelpers.callConstructor(fragmentClass),
-                activityClass, intent);
-    }
-
-    public static <T extends Fragment> FragmentController<T> buildFragment(Class<T> fragmentClass,
-            Class<? extends FragmentActivity> activityClass,
-            Bundle arguments) {
-        return FragmentController.of(ReflectionHelpers.callConstructor(fragmentClass),
-                activityClass, arguments);
-    }
-
-    public static <T extends Fragment> FragmentController<T> buildFragment(Class<T> fragmentClass,
-            Class<? extends FragmentActivity> activityClass,
-            Intent intent,
-            Bundle arguments) {
-        return FragmentController.of(ReflectionHelpers.callConstructor(fragmentClass),
-                activityClass, intent, arguments);
-    }
-
-    public static <T extends BackupAgent> BackupAgentController<T> buildBackupAgent(
-            Class<T> backupAgentClass) {
-        return BackupAgentController.of(ReflectionHelpers.callConstructor(backupAgentClass));
-    }
-
-    public static <T extends BackupAgent> T setupBackupAgent(Class<T> backupAgentClass) {
-        return buildBackupAgent(backupAgentClass).create().get();
-    }
-
-    /**
-     * Allows for the programatic creation of an {@link AttributeSet} useful for testing
-     * {@link View} classes without
-     * the need for creating XML snippets.
-     */
-    public static AttributeSetBuilder buildAttributeSet() {
-        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
-        factory.setNamespaceAware(true);
-        factory.setIgnoringComments(true);
-        factory.setIgnoringElementContentWhitespace(true);
-        Document document;
-        try {
-            DocumentBuilder documentBuilder = factory.newDocumentBuilder();
-            document = documentBuilder.newDocument();
-            Element dummy = document.createElementNS("http://schemas.android.com/apk/res/" +
-                    RuntimeEnvironment.application.getPackageName(), "dummy");
-            document.appendChild(dummy);
-        } catch (ParserConfigurationException e) {
-            throw new RuntimeException(e);
-        }
-        return new AttributeSetBuilder(document, RuntimeEnvironment.getCompileTimeResourceTable());
-    }
-
-    public static class AttributeSetBuilder {
-
-        private Document doc;
-        private ResourceTable appResourceTable;
-
-        AttributeSetBuilder(Document doc, ResourceTable resourceTable) {
-            this.doc = doc;
-            this.appResourceTable = resourceTable;
-        }
-
-        public AttributeSetBuilder addAttribute(int resId, String value) {
-            ResName resName = appResourceTable.getResName(resId);
-            if ("style".equals(resName.name)) {
-                ((Element) doc.getFirstChild()).setAttribute(resName.name, value);
-            } else {
-                ((Element) doc.getFirstChild()).setAttributeNS(resName.getNamespaceUri(),
-                        resName.packageName + ":" + resName.name, value);
-            }
-            return this;
-        }
-
-        public AttributeSetBuilder setStyleAttribute(String value) {
-            ((Element) doc.getFirstChild()).setAttribute("style", value);
-            return this;
-        }
-
-        public AttributeSet build() {
-            XmlResourceParserImpl parser = new XmlResourceParserImpl(doc, null,
-                    RuntimeEnvironment.application.getPackageName(),
-                    RuntimeEnvironment.application.getPackageName(), appResourceTable);
-            try {
-                parser.next(); // Root document element
-                parser.next(); // "dummy" element
-            } catch (Exception e) {
-                throw new IllegalStateException(
-                        "Expected single dummy element in the document to contain the attributes.",
-                        e);
-            }
-
-            return parser;
-        }
-    }
-
-    /**
-     * Return the foreground scheduler (e.g. the UI thread scheduler).
-     *
-     * @return Foreground scheduler.
-     */
-    public static Scheduler getForegroundThreadScheduler() {
-        return ShadowApplication.getInstance().getForegroundThreadScheduler();
-    }
-
-    /**
-     * Execute all runnables that have been enqueued on the foreground scheduler.
-     */
-    public static void flushForegroundThreadScheduler() {
-        getForegroundThreadScheduler().advanceToLastPostedRunnable();
-    }
-
-    /**
-     * Return the background scheduler.
-     *
-     * @return Background scheduler.
-     */
-    public static Scheduler getBackgroundThreadScheduler() {
-        return ShadowApplication.getInstance().getBackgroundThreadScheduler();
-    }
-
-    /**
-     * Execute all runnables that have been enqueued on the background scheduler.
-     */
-    public static void flushBackgroundThreadScheduler() {
-        getBackgroundThreadScheduler().advanceToLastPostedRunnable();
-    }
 }
 
diff --git a/tests/robotests/src/com/android/settings/users/EditUserInfoControllerTest.java b/tests/robotests/src/com/android/settings/users/EditUserInfoControllerTest.java
index caff2fa..97b3e69 100644
--- a/tests/robotests/src/com/android/settings/users/EditUserInfoControllerTest.java
+++ b/tests/robotests/src/com/android/settings/users/EditUserInfoControllerTest.java
@@ -39,7 +39,6 @@
 import androidx.fragment.app.FragmentActivity;
 
 import com.android.settings.R;
-import com.android.settings.testutils.Robolectric;
 import com.android.settings.testutils.SettingsRobolectricTestRunner;
 import com.android.settings.testutils.shadow.ShadowUserManager;
 
@@ -50,6 +49,7 @@
 import org.mockito.Answers;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
+import org.robolectric.android.controller.ActivityController;
 import org.robolectric.annotation.Config;
 
 @RunWith(SettingsRobolectricTestRunner.class)
@@ -94,7 +94,7 @@
         MockitoAnnotations.initMocks(this);
         mUserManager = ShadowUserManager.getShadow();
         mUserManager.setUserInfo(0, mUserInfo);
-        mActivity = spy(Robolectric.buildActivity(FragmentActivity.class).get());
+        mActivity = spy(ActivityController.of(new FragmentActivity()).get());
         when(mFragment.getActivity()).thenReturn(mActivity);
         when(mActivity.getLayoutInflater()).thenReturn(mInflater);
         when(mInflater.inflate(eq(R.layout.edit_user_info_dialog_content), any())).thenReturn(
diff --git a/tests/robotests/src/com/android/settings/users/UserSettingsTest.java b/tests/robotests/src/com/android/settings/users/UserSettingsTest.java
index 49a4406..62135fe 100644
--- a/tests/robotests/src/com/android/settings/users/UserSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/users/UserSettingsTest.java
@@ -29,7 +29,6 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-import android.app.admin.DevicePolicyManager;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.SharedPreferences;
@@ -52,7 +51,6 @@
 
 import com.android.settings.R;
 import com.android.settings.dashboard.SummaryLoader;
-import com.android.settings.testutils.Robolectric;
 import com.android.settings.testutils.SettingsRobolectricTestRunner;
 import com.android.settings.testutils.shadow.ShadowDevicePolicyManager;
 import com.android.settings.testutils.shadow.ShadowUserManager;
@@ -66,6 +64,7 @@
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 import org.robolectric.RuntimeEnvironment;
+import org.robolectric.android.controller.ActivityController;
 import org.robolectric.annotation.Config;
 import org.robolectric.util.ReflectionHelpers;
 
@@ -103,7 +102,7 @@
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
-        mActivity = spy(Robolectric.buildActivity(FragmentActivity.class).get());
+        mActivity = spy(ActivityController.of(new FragmentActivity()).get());
         mContext = spy(RuntimeEnvironment.application);
         mFragment = spy(new UserSettings());
         ReflectionHelpers.setField(mFragment, "mAddUserWhenLockedPreferenceController",
diff --git a/tests/robotests/src/com/android/settings/wifi/AddNetworkFragmentTest.java b/tests/robotests/src/com/android/settings/wifi/AddNetworkFragmentTest.java
index 097b582..2b4b4be 100644
--- a/tests/robotests/src/com/android/settings/wifi/AddNetworkFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/AddNetworkFragmentTest.java
@@ -26,13 +26,13 @@
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.settings.testutils.SettingsRobolectricTestRunner;
 import com.android.settings.testutils.shadow.ShadowConnectivityManager;
-import com.android.settingslib.testutils.FragmentTestUtils;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.MockitoAnnotations;
 import org.robolectric.annotation.Config;
+import org.robolectric.shadows.androidx.fragment.FragmentController;
 
 @RunWith(SettingsRobolectricTestRunner.class)
 @Config(shadows = ShadowConnectivityManager.class)
@@ -44,7 +44,7 @@
     public void setUp() {
         MockitoAnnotations.initMocks(this);
         mAddNetworkFragment = spy(new AddNetworkFragment());
-        FragmentTestUtils.startFragment(mAddNetworkFragment);
+        FragmentController.setupFragment(mAddNetworkFragment);
     }
 
     @Test