CTS test for screen off scan schedule

Add CTS for the new API

Flag: com.android.wifi.flags.wifi_pno_scan_schedule_api
Bug: 399014087
Bug: 409649204
Test: atest WifiManagerTest#testSetScreenOffScanSchedule
Change-Id: I0dacaa364f3e3b6e9693e64eb461b2b716faa40e
diff --git a/tests/tests/wifi/src/android/net/wifi/cts/WifiManagerTest.java b/tests/tests/wifi/src/android/net/wifi/cts/WifiManagerTest.java
index 7180777..f0fcb61 100644
--- a/tests/tests/wifi/src/android/net/wifi/cts/WifiManagerTest.java
+++ b/tests/tests/wifi/src/android/net/wifi/cts/WifiManagerTest.java
@@ -1586,6 +1586,35 @@
                 null, WifiScanner.SCAN_TYPE_HIGH_ACCURACY));
     }
 
+    /** Verify setting the scan schedule. */
+    @SdkSuppress(minSdkVersion = Build.VERSION_CODES.TIRAMISU)
+    @RequiresFlagsEnabled(Flags.FLAG_WIFI_PNO_SCAN_SCHEDULE_API)
+    @ApiTest(apis = {"android.net.wifi.WifiManager#setScreenOffScanSchedule"})
+    @Test
+    public void testSetScreenOffScanSchedule() {
+        WifiManager.ScreenOffScanSchedule screenOffScanSchedule =
+                new WifiManager.ScreenOffScanSchedule.Builder()
+                        .setScanIterations(4)
+                        .setScanMultiplier(5)
+                        .setMovingScanInterval(Duration.ofSeconds(60))
+                        .setStationaryScanInterval(Duration.ofSeconds(180))
+                        .build();
+
+        // Verify no permission will trigger SecurityException
+        assertThrows(
+                SecurityException.class,
+                () -> sWifiManager.setScreenOffScanSchedule(screenOffScanSchedule));
+        UiAutomation uiAutomation = InstrumentationRegistry.getInstrumentation().getUiAutomation();
+        try {
+            uiAutomation.adoptShellPermissionIdentity();
+            sWifiManager.setScreenOffScanSchedule(screenOffScanSchedule);
+        } finally {
+            // reset back to config overlay value
+            sWifiManager.setScreenOffScanSchedule(null);
+            uiAutomation.dropShellPermissionIdentity();
+        }
+    }
+
     /**
      * Verify a normal app cannot set the scan schedule.
      */