Remove BlankUiTestActivityTestCase.

Use BaseActivityTestRule<BlankUiTestActivity> instead.

Bug: 369884095
Change-Id: I6da19249d20fd31a369e00bee98f2a0d52fbca02
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6035967
Commit-Queue: Ted Choc <[email protected]>
Reviewed-by: Andrew Grieve <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1385154}
diff --git a/docs/testing/android_test_instructions.md b/docs/testing/android_test_instructions.md
index 5b333a7..dd047b0 100644
--- a/docs/testing/android_test_instructions.md
+++ b/docs/testing/android_test_instructions.md
@@ -10,8 +10,8 @@
     mocking) Android APIs.
 -   **[Instrumentation Tests]**: JUnit tests that run on devices / emulators.
     - **Unit Instrumentation Tests**: Unit tests that do not require
-      initializing the Content layer. These use [BaseActivityTestRule] or
-      [BlankUiTestActivityTestCase] based on `BaseActivityTestRule`.
+      initializing the Content layer. These use [BaseActivityTestRule] often
+      using [BlankUiTestActivity].
     - **Integration Instrumentation Tests**: Instrumentation tests that require
       initializing the Content layer to test a certain feature in the end-to-end
       flow. These typically use more specialized test rules such as
@@ -21,7 +21,7 @@
 [Robolectric]: android_robolectric_tests.md
 [Instrumentation Tests]: android_instrumentation_tests.md
 [BaseActivityTestRule]: https://source.chromium.org/chromium/chromium/src/+/main:base/test/android/javatests/src/org/chromium/base/test/BaseActivityTestRule.java
-[BlankUiTestActivityTestCase]: https://source.chromium.org/chromium/chromium/src/+/main:ui/android/javatests/src/org/chromium/ui/test/util/BlankUiTestActivityTestCase.java
+[BlankUiTestActivity]: https://source.chromium.org/chromium/chromium/src/+/main:ui/android/javatests/src/org/chromium/ui/test/util/BlankUiTestActivity.java
 [ContentShellActivityTestRule]: https://source.chromium.org/chromium/chromium/src/+/main:content/shell/android/javatests/src/org/chromium/content_shell_apk/ContentShellActivityTestRule.java
 [ChromeActivityTestRule]: https://source.chromium.org/chromium/chromium/src/+/main:chrome/test/android/javatests/src/org/chromium/chrome/test/ChromeActivityTestRule.java
 
diff --git a/docs/ui/android/night_mode.md b/docs/ui/android/night_mode.md
index 0a650e9..3c55ec7 100644
--- a/docs/ui/android/night_mode.md
+++ b/docs/ui/android/night_mode.md
@@ -128,7 +128,7 @@
 * Use class parameter [`NightModeTestUtils.NightModeParams.class`](https://cs.chromium.org/chromium/src/ui/android/javatests/src/org/chromium/ui/test/util/NightModeTestUtils.java?type=cs&q=NightModeTestUtils.NightModeParams)
 * Pass in a boolean parameter that indicates night mode state in constructor
 * Set up night mode in constructor by calling [`NightModeTestUtils#setUpNightModeForBlankUiTestActivity()`](https://cs.chromium.org/chromium/src/ui/android/javatests/src/org/chromium/ui/test/util/NightModeTestUtils.java?type=cs&q=setUpNightModeForBlankUiTestActivity&sq=package:chromium) and [`RenderTestRule#setNightModeEnabled()`](https://cs.chromium.org/chromium/src/ui/android/javatests/src/org/chromium/ui/test/util/RenderTestRule.java?type=cs&q=setNightModeEnabled)
-* During [`tearDownTest()`](https://cs.chromium.org/chromium/src/ui/android/javatests/src/org/chromium/ui/test/util/BlankUiTestActivityTestCase.java?type=cs&q=tearDownTest), reset night mode state by calling [`NightModeTestUtils#tearDownNightModeForBlankUiTestActivity()`](https://cs.chromium.org/chromium/src/ui/android/javatests/src/org/chromium/ui/test/util/NightModeTestUtils.java?type=cs&q=tearDownNightModeForBlankUiTestActivity)
+* During `tearDown()`, reset night mode state by calling [`NightModeTestUtils#tearDownNightModeForBlankUiTestActivity()`](https://cs.chromium.org/chromium/src/ui/android/javatests/src/org/chromium/ui/test/util/NightModeTestUtils.java?type=cs&q=tearDownNightModeForBlankUiTestActivity)
 
 See [this CL](https://chromium-review.googlesource.com/c/chromium/src/+/1613883) as an example
 
diff --git a/tools/android/generate_java_test/generate_java_test.py b/tools/android/generate_java_test/generate_java_test.py
index a4321bd..5008439 100755
--- a/tools/android/generate_java_test/generate_java_test.py
+++ b/tools/android/generate_java_test/generate_java_test.py
@@ -52,15 +52,31 @@
 
 package %s;
 
+import android.app.Activity;
+
+import org.junit.BeforeClass;
+import org.junit.ClassRule;
 import org.junit.runner.RunWith;
 
+import org.chromium.base.test.BaseActivityTestRule;
+import org.chromium.base.test.util.Batch;
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
-import org.chromium.ui.test.util.BlankUiTestActivityTestCase;
+import org.chromium.ui.test.util.BlankUiTestActivity;
 
 /** Instrumentation tests for {@link %s}. */
 @RunWith(ChromeJUnit4ClassRunner.class)
-public class %sInstrumentationTest extends BlankUiTestActivityTestCase {
+@Batch(Batch.PER_CLASS)
+public class %sInstrumentationTest {
+    @ClassRule
+    public static BaseActivityTestRule<BlankUiTestActivity> sActivityTestRule =
+            new BaseActivityTestRule<>(BlankUiTestActivity.class);
 
+    private static Activity sActivity;
+
+    @BeforeClass
+    public static void setupSuite() {
+        sActivity = sActivityTestRule.launchActivity(null);
+    }
 }
 '''
 
diff --git a/ui/android/BUILD.gn b/ui/android/BUILD.gn
index abb6466..be5c9ea 100644
--- a/ui/android/BUILD.gn
+++ b/ui/android/BUILD.gn
@@ -531,7 +531,6 @@
     "javatests/src/org/chromium/ui/test/transit/SoftKeyboardCondition.java",
     "javatests/src/org/chromium/ui/test/transit/SoftKeyboardElement.java",
     "javatests/src/org/chromium/ui/test/util/BlankUiTestActivity.java",
-    "javatests/src/org/chromium/ui/test/util/BlankUiTestActivityTestCase.java",
     "javatests/src/org/chromium/ui/test/util/DeviceRestriction.java",
     "javatests/src/org/chromium/ui/test/util/GmsCoreVersionRestriction.java",
     "javatests/src/org/chromium/ui/test/util/MockitoHelper.java",
diff --git a/ui/android/javatests/src/org/chromium/ui/test/util/BlankUiTestActivityTestCase.java b/ui/android/javatests/src/org/chromium/ui/test/util/BlankUiTestActivityTestCase.java
deleted file mode 100644
index 56bc021..0000000
--- a/ui/android/javatests/src/org/chromium/ui/test/util/BlankUiTestActivityTestCase.java
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright 2018 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package org.chromium.ui.test.util;
-
-import androidx.test.runner.lifecycle.Stage;
-
-import org.junit.Rule;
-import org.junit.rules.RuleChain;
-import org.junit.rules.TestRule;
-import org.junit.runner.Description;
-import org.junit.runners.model.Statement;
-
-import org.chromium.base.test.BaseActivityTestRule;
-import org.chromium.base.test.util.ApplicationTestUtils;
-
-/**
- * Test case to instrument BlankUiTestActivity for UI testing scenarios.
- * Recommend to use setUpTest() and tearDownTest() to setup and tear down instead of @Before and
- * @After.
- */
-public class BlankUiTestActivityTestCase {
-    private BlankUiTestActivity mActivity;
-
-    private final BaseActivityTestRule<? extends BlankUiTestActivity> mActivityTestRule;
-
-    // Disable animations to reduce flakiness.
-    @Rule public final TestRule ruleChain;
-
-    /** Default constructor that creates a {@link BlankUiTestActivity} as expected. */
-    public BlankUiTestActivityTestCase() {
-        this(new BaseActivityTestRule<BlankUiTestActivity>(BlankUiTestActivity.class));
-    }
-
-    /**
-     * Constructor to allow subclasses to inject activity and rule subclasses.
-     * @param activityTestRule Injected rule to use for activity interactions.
-     */
-    protected BlankUiTestActivityTestCase(
-            BaseActivityTestRule<? extends BlankUiTestActivity> activityTestRule) {
-        mActivityTestRule = activityTestRule;
-        ruleChain = RuleChain.outerRule(mActivityTestRule).around(new TestDriverRule());
-    }
-
-    /** TestRule to setup and tear down for each test. */
-    public final class TestDriverRule implements TestRule {
-        @Override
-        public Statement apply(final Statement base, Description description) {
-            return new Statement() {
-                @Override
-                public void evaluate() throws Throwable {
-                    beforeActivityLaunch();
-                    mActivityTestRule.launchActivity(null);
-                    ApplicationTestUtils.waitForActivityState(
-                            mActivityTestRule.getActivity(), Stage.RESUMED);
-                    setUpTest();
-                    try {
-                        base.evaluate();
-                    } finally {
-                        tearDownTest();
-                    }
-                }
-            };
-        }
-    }
-
-    public void beforeActivityLaunch() throws Exception {}
-
-    // Override this to setup before test.
-    public void setUpTest() throws Exception {
-        mActivity = mActivityTestRule.getActivity();
-    }
-
-    // Override this to tear down after test.
-    public void tearDownTest() throws Exception {}
-
-    public BlankUiTestActivity getActivity() {
-        return mActivity;
-    }
-}