From 956f4dc23182fb7c42d29546b466e117453f6a75 Mon Sep 17 00:00:00 2001 From: David Su Date: Mon, 5 Oct 2020 22:41:42 +0000 Subject: [PATCH] Ensure CONFIGURED_NETWORKS_CHANGED not received without permissions Ensure that the CONFIGURED_NETWORKS_CHANGED_ACTION broadcast is not received without the required permissions. Bug: 159373687 Test: cts-tradefed run cts -m CtsNetTestCases --test android.net.wifi.cts.WifiManagerTest#testWifiManagerNetWork Change-Id: I2e3f38b05d63571e838b148fbbb2ce6f68c19c01 Merged-In: I4669a6ff79b3d2e99795015e42bfa611cffb9070 --- .../android/net/wifi/cts/WifiManagerTest.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tests/cts/net/src/android/net/wifi/cts/WifiManagerTest.java b/tests/cts/net/src/android/net/wifi/cts/WifiManagerTest.java index 44b49c0274..c5d0d4f0ad 100644 --- a/tests/cts/net/src/android/net/wifi/cts/WifiManagerTest.java +++ b/tests/cts/net/src/android/net/wifi/cts/WifiManagerTest.java @@ -411,12 +411,33 @@ public class WifiManagerTest extends AndroidTestCase { assertFalse(existSSID(SSID1)); assertTrue(existSSID(SSID2)); + // Need an effectively-final holder because we need to modify inner Intent in callback. + class IntentHolder { + Intent intent; + } + IntentHolder intentHolder = new IntentHolder(); + mContext.registerReceiver(new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + Log.i(TAG, "Received CONFIGURED_NETWORKS_CHANGED_ACTION broadcast: " + intent); + intentHolder.intent = intent; + } + }, new IntentFilter(WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION)); + // Remove a WifiConfig assertTrue(mWifiManager.removeNetwork(netId)); assertFalse(mWifiManager.removeNetwork(notExist)); assertFalse(existSSID(SSID1)); assertFalse(existSSID(SSID2)); + // wait 10 seconds to ensure that broadcast wasn't received + Thread.sleep(DURATION); + Intent intent = intentHolder.intent; + // Broadcast shouldn't be received because although CtsNetTestCases has + // ACCESS_WIFI_STATE permission, it doesn't have ACCESS_FINE_LOCATION permission. + // Receivers need both permissions to get the broadcast. + assertNull("Unexpected received CONFIGURED_NETWORKS_CHANGED_ACTION broadcast!", intent); + assertTrue(mWifiManager.saveConfiguration()); } finally { reEnableNetworks(enabledSsids, mWifiManager.getConfiguredNetworks());