Add flagged API setPnoScanEnabled

Bug: 282821585
Test: atest com.android.server.wifi

Change-Id: Ifc2f4f6b2213bd2c08818e46cc1c75b70860c405
diff --git a/flags/Android.bp b/flags/Android.bp
index 8d0cda1..676ff16 100644
--- a/flags/Android.bp
+++ b/flags/Android.bp
@@ -33,5 +33,6 @@
     ],
     visibility: [
         "//packages/modules/Wifi:__subpackages__",
+        "//cts/tests/tests/wifi:__subpackages__",
     ],
 }
\ No newline at end of file
diff --git a/flags/wifi_flags.aconfig b/flags/wifi_flags.aconfig
index 3bc66de..c1a8314 100644
--- a/flags/wifi_flags.aconfig
+++ b/flags/wifi_flags.aconfig
@@ -6,3 +6,11 @@
     description: "This flag aim to test the flag release for wifi stack"
     bug: "301145404"
 }
+
+flag {
+    name: "runtime_disable_pno_scan"
+    namespace: "wifi"
+    description: "Control the API to disable the PNO runtime"
+    bug: "282821585"
+}
+
diff --git a/framework/api/system-current.txt b/framework/api/system-current.txt
index 0f5cb2b..ee9b214 100644
--- a/framework/api/system-current.txt
+++ b/framework/api/system-current.txt
@@ -679,7 +679,7 @@
     method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.MANAGE_WIFI_NETWORK_SELECTION}) public void setOneShotScreenOnConnectivityScanDelayMillis(@IntRange(from=0) int);
     method @RequiresPermission(android.Manifest.permission.MANAGE_WIFI_COUNTRY_CODE) public void setOverrideCountryCode(@NonNull String);
     method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void setPasspointMeteredOverride(@NonNull String, int);
-    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_WIFI_NETWORK_SELECTION, android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD}) public void setPnoScanEnabled(boolean, boolean);
+    method @FlaggedApi("com.android.wifi.flags.runtime_disable_pno_scan") @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_WIFI_NETWORK_SELECTION, android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD}) public void setPnoScanEnabled(boolean, boolean);
     method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void setScanAlwaysAvailable(boolean);
     method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void setScanThrottleEnabled(boolean);
     method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.MANAGE_WIFI_NETWORK_SELECTION}) public void setScreenOnScanSchedule(@Nullable java.util.List<android.net.wifi.WifiManager.ScreenOnScanSchedule>);
diff --git a/framework/api/system-lint-baseline.txt b/framework/api/system-lint-baseline.txt
index 943ba8b..7c806ab 100644
--- a/framework/api/system-lint-baseline.txt
+++ b/framework/api/system-lint-baseline.txt
@@ -55,8 +55,6 @@
     New API must be flagged with @FlaggedApi: method android.net.wifi.WifiManager.isLowLatencyModeSupported()
 UnflaggedApi: android.net.wifi.WifiManager#removeWifiLowLatencyLockListener(android.net.wifi.WifiManager.WifiLowLatencyLockListener):
     New API must be flagged with @FlaggedApi: method android.net.wifi.WifiManager.removeWifiLowLatencyLockListener(android.net.wifi.WifiManager.WifiLowLatencyLockListener)
-UnflaggedApi: android.net.wifi.WifiManager#setPnoScanEnabled(boolean, boolean):
-    New API must be flagged with @FlaggedApi: method android.net.wifi.WifiManager.setPnoScanEnabled(boolean,boolean)
 UnflaggedApi: android.net.wifi.WifiManager.WifiLowLatencyLockListener:
     New API must be flagged with @FlaggedApi: class android.net.wifi.WifiManager.WifiLowLatencyLockListener
 UnflaggedApi: android.net.wifi.WifiManager.WifiLowLatencyLockListener#onActivatedStateChanged(boolean):
diff --git a/framework/java/android/net/wifi/WifiManager.java b/framework/java/android/net/wifi/WifiManager.java
index b69bcce..cee599d 100644
--- a/framework/java/android/net/wifi/WifiManager.java
+++ b/framework/java/android/net/wifi/WifiManager.java
@@ -28,6 +28,7 @@
 
 import android.Manifest;
 import android.annotation.CallbackExecutor;
+import android.annotation.FlaggedApi;
 import android.annotation.IntDef;
 import android.annotation.IntRange;
 import android.annotation.NonNull;
@@ -73,7 +74,6 @@
 import android.os.WorkSource;
 import android.os.connectivity.WifiActivityEnergyInfo;
 import android.telephony.SubscriptionInfo;
-import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 import android.util.ArraySet;
 import android.util.CloseGuard;
@@ -10339,9 +10339,10 @@
      * @throws SecurityException if the caller does not have permission.
      * @hide
      */
+    @FlaggedApi("com.android.wifi.flags.runtime_disable_pno_scan")
     @SystemApi
-    @RequiresPermission(anyOf = {MANAGE_WIFI_NETWORK_SELECTION, NETWORK_SETTINGS,
-            NETWORK_SETUP_WIZARD})
+    @RequiresPermission(
+            anyOf = {MANAGE_WIFI_NETWORK_SELECTION, NETWORK_SETTINGS, NETWORK_SETUP_WIZARD})
     public void setPnoScanEnabled(boolean enabled, boolean enablePnoScanAfterWifiToggle) {
         try {
             mService.setPnoScanEnabled(enabled, enablePnoScanAfterWifiToggle,