Merge "Detect leaks only on test success Bug: 191690396 Test: presubmit" into sc-dev
diff --git a/quickstep/tests/src/com/android/quickstep/FallbackRecentsTest.java b/quickstep/tests/src/com/android/quickstep/FallbackRecentsTest.java
index 9630d27..a683d01 100644
--- a/quickstep/tests/src/com/android/quickstep/FallbackRecentsTest.java
+++ b/quickstep/tests/src/com/android/quickstep/FallbackRecentsTest.java
@@ -107,7 +107,7 @@
 
         mOrderSensitiveRules = RuleChain
                 .outerRule(new NavigationModeSwitchRule(mLauncher))
-                .around(new FailureWatcher(mDevice));
+                .around(new FailureWatcher(mDevice, mLauncher));
 
         mOtherLauncherActivity = context.getPackageManager().queryIntentActivities(
                 getHomeIntentInPackage(context),
diff --git a/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java b/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java
index cbd9480..2712bc0 100644
--- a/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java
+++ b/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java
@@ -229,7 +229,7 @@
 
     protected TestRule getRulesInsideActivityMonitor() {
         final RuleChain inner = RuleChain.outerRule(new PortraitLandscapeRunner(this))
-                .around(new FailureWatcher(mDevice));
+                .around(new FailureWatcher(mDevice, mLauncher));
 
         return TestHelpers.isInLauncherProcess()
                 ? RuleChain.outerRule(ShellCommandRule.setDefaultLauncher())
@@ -310,7 +310,6 @@
                 assertEquals("Launcher crashed, pid mismatch:",
                         mLauncherPid, mLauncher.getPid().intValue());
             }
-            checkDetectedLeaks(mLauncher);
         } finally {
             mLauncher.onTestFinish();
         }
@@ -618,5 +617,6 @@
                 isResumed);
     }
 
-    protected void onLauncherActivityClose(Launcher launcher) { }
+    protected void onLauncherActivityClose(Launcher launcher) {
+    }
 }
diff --git a/tests/src/com/android/launcher3/util/rule/FailureWatcher.java b/tests/src/com/android/launcher3/util/rule/FailureWatcher.java
index cdda0f0..4c47947 100644
--- a/tests/src/com/android/launcher3/util/rule/FailureWatcher.java
+++ b/tests/src/com/android/launcher3/util/rule/FailureWatcher.java
@@ -6,6 +6,9 @@
 
 import androidx.test.uiautomator.UiDevice;
 
+import com.android.launcher3.tapl.LauncherInstrumentation;
+import com.android.launcher3.ui.AbstractLauncherUiTest;
+
 import org.junit.rules.TestWatcher;
 import org.junit.runner.Description;
 
@@ -16,9 +19,11 @@
 public class FailureWatcher extends TestWatcher {
     private static final String TAG = "FailureWatcher";
     final private UiDevice mDevice;
+    private final LauncherInstrumentation mLauncher;
 
-    public FailureWatcher(UiDevice device) {
+    public FailureWatcher(UiDevice device, LauncherInstrumentation launcher) {
         mDevice = device;
+        mLauncher = launcher;
     }
 
     private static void dumpViewHierarchy(UiDevice device) {
@@ -36,6 +41,12 @@
     }
 
     @Override
+    protected void succeeded(Description description) {
+        super.succeeded(description);
+        AbstractLauncherUiTest.checkDetectedLeaks(mLauncher);
+    }
+
+    @Override
     protected void failed(Throwable e, Description description) {
         onError(mDevice, description, e);
     }