[AAPM] UX for disabling WEP
Toggle is restricted, and trying to connect shows an error
Bug: 352420507
Change-Id: Ie8476070f8998d9485016cc2416cd3ff3900c973
Test: Manually. Automated tests to follow
Flag: com.android.wifi.flags.wep_disabled_in_apm
diff --git a/packages/SettingsLib/Android.bp b/packages/SettingsLib/Android.bp
index a3da93d..d739aaf 100644
--- a/packages/SettingsLib/Android.bp
+++ b/packages/SettingsLib/Android.bp
@@ -65,6 +65,7 @@
libs:[
// This flag library has been added in frameworks jar
"aconfig_settingslib_flags_java_lib",
+ "wifi_framework_aconfig_flags_lib",
],
plugins: ["androidx.room_room-compiler-plugin"],
use_resource_processor: true,
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.kt b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.kt
index a7e0464..e01f279 100644
--- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.kt
+++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.kt
@@ -27,6 +27,7 @@
import android.net.wifi.sharedconnectivity.app.NetworkProviderInfo
import android.os.Bundle
import android.os.SystemClock
+import android.security.advancedprotection.AdvancedProtectionManager
import android.util.Log
import android.view.WindowManager
import androidx.annotation.VisibleForTesting
@@ -498,7 +499,13 @@
): Job =
coroutineScope.launch {
val wifiManager = context.getSystemService(WifiManager::class.java) ?: return@launch
- if (wifiManager.isWepSupported == true && wifiManager.queryWepAllowed()) {
+ val aapmManager = context.getSystemService(AdvancedProtectionManager::class.java)
+ if (isAdvancedProtectionEnabled(aapmManager)) {
+ val intent = aapmManager.createSupportIntent(
+ AdvancedProtectionManager.FEATURE_ID_DISALLOW_WEP,
+ AdvancedProtectionManager.SUPPORT_DIALOG_TYPE_BLOCKED_INTERACTION)
+ onStartActivity(intent)
+ } else if (wifiManager.isWepSupported == true && wifiManager.queryWepAllowed()) {
onAllowed()
} else {
val intent = Intent(Intent.ACTION_MAIN).apply {
@@ -522,6 +529,18 @@
}
}
+ private suspend fun isAdvancedProtectionEnabled(
+ aapmManager: AdvancedProtectionManager?
+ ): Boolean =
+ if (android.security.Flags.aapmApi() &&
+ com.android.wifi.flags.Flags.wepDisabledInApm() &&
+ aapmManager != null
+ ) {
+ withContext(Dispatchers.Default) { aapmManager.isAdvancedProtectionEnabled() }
+ } else {
+ false
+ }
+
const val SSID = "ssid"
const val DIALOG_WINDOW_TYPE = "dialog_window_type"
}