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.
*/