Hide immersive mode confirmation dialog during SurfaceFlingerPerfTests

Test: atest android.surfaceflinger.SurfaceFlingerPerfTest
Bug: 298240242
Change-Id: I87117178a296df9741def8e1c8e711c412d31761
diff --git a/apct-tests/perftests/surfaceflinger/src/android/surfaceflinger/SurfaceFlingerPerfTest.java b/apct-tests/perftests/surfaceflinger/src/android/surfaceflinger/SurfaceFlingerPerfTest.java
index fd9d991..c53cc18 100644
--- a/apct-tests/perftests/surfaceflinger/src/android/surfaceflinger/SurfaceFlingerPerfTest.java
+++ b/apct-tests/perftests/surfaceflinger/src/android/surfaceflinger/SurfaceFlingerPerfTest.java
@@ -17,12 +17,15 @@
 package android.surfaceflinger;
 
 import static android.server.wm.CtsWindowInfoUtils.waitForWindowOnTop;
+import static android.provider.Settings.Secure.IMMERSIVE_MODE_CONFIRMATIONS;
 
 import android.app.Instrumentation;
+import android.content.ContentResolver;
 import android.graphics.Bitmap;
 import android.graphics.Canvas;
 import android.graphics.Color;
 import android.os.Bundle;
+import android.provider.Settings;
 import android.util.Log;
 import android.view.SurfaceControl;
 import android.view.SurfaceHolder;
@@ -33,9 +36,11 @@
 import androidx.test.platform.app.InstrumentationRegistry;
 import androidx.test.runner.AndroidJUnit4;
 
+import com.android.compatibility.common.util.SystemUtil;
 import com.android.helpers.SimpleperfHelper;
 
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Rule;
@@ -71,7 +76,7 @@
 
     private int mTransformHint;
     private SimpleperfHelper mSimpleperfHelper = new SimpleperfHelper();
-
+    private static String sImmersiveModeConfirmationValue;
     /** Start simpleperf sampling. */
     public void startSimpleperf(String subcommand, String arguments) {
         if (!mSimpleperfHelper.startCollecting(subcommand, arguments)) {
@@ -88,6 +93,17 @@
 
     @BeforeClass
     public static void suiteSetup() {
+        SystemUtil.runWithShellPermissionIdentity(() -> {
+            // hide immersive mode confirmation dialog
+            final ContentResolver resolver =
+                    InstrumentationRegistry.getInstrumentation().getContext().getContentResolver();
+            sImmersiveModeConfirmationValue =
+                    Settings.Secure.getString(resolver, IMMERSIVE_MODE_CONFIRMATIONS);
+            Settings.Secure.putString(
+                    resolver,
+                    IMMERSIVE_MODE_CONFIRMATIONS,
+                    "confirmed");
+        });
         final Bundle arguments = InstrumentationRegistry.getArguments();
         sProfilingIterations = Integer.parseInt(
                 arguments.getString(ARGUMENT_PROFILING_ITERATIONS, DEFAULT_PROFILING_ITERATIONS));
@@ -98,6 +114,18 @@
                 .executeShellCommand("service call SurfaceFlinger 1041 i32 -1");
     }
 
+    @AfterClass
+    public static void suiteTeardown() {
+        SystemUtil.runWithShellPermissionIdentity(() -> {
+            // Restore the immersive mode confirmation state.
+            Settings.Secure.putString(
+                    InstrumentationRegistry.getInstrumentation().getContext().getContentResolver(),
+                    IMMERSIVE_MODE_CONFIRMATIONS,
+                    sImmersiveModeConfirmationValue);
+        });
+    }
+
+
     @Before
     public void setup() {
         mActivityRule.getScenario().onActivity(activity -> mActivity = activity);