From b33a1d5b8d8583628ca94b3df7ed5ededca1191d Mon Sep 17 00:00:00 2001 From: Roshan Pius Date: Thu, 28 May 2020 22:18:16 -0700 Subject: ConfigurationMap: Don't cache specifier ScanResultMatchInfo WifiConfiguration's created from WifiNetworkSpecifier requests should not be cached in the internal ScanResultMatchInfo cache maintained by WifiConfigManager. This WifiConfiguration is truly ephemeral in nature and is deleted after every connnection. Also, WifiNetworkSpecifier WifiConfiguration is the only case today where we can have multiple WifiConfiguration for the same network (because we WifiConfiguration.shared = false for WifiNetworkSpecifier networks) Note: A more generic fix for this will be done in b/142035508. Since not storing cache entries for suggestions or WFA networks may cause other side effects and too risky for R at this stage. Bug: 157609789 Test: atest com.android.server.wifi Test: atest ConnectedNetworkScorerTest WifiNetworkSpecifierTest Test: act.py -c wifi_manager_cross.config -tb dut-name -tc WifiNetworkRequestTest Change-Id: I85cc20bd910cf3e974746653737a8fda54a27e09 --- .../com/android/server/wifi/ConfigurationMapTest.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'tests') diff --git a/tests/wifitests/src/com/android/server/wifi/ConfigurationMapTest.java b/tests/wifitests/src/com/android/server/wifi/ConfigurationMapTest.java index b433d94cf..02994ecad 100644 --- a/tests/wifitests/src/com/android/server/wifi/ConfigurationMapTest.java +++ b/tests/wifitests/src/com/android/server/wifi/ConfigurationMapTest.java @@ -333,4 +333,23 @@ public class ConfigurationMapTest extends WifiBaseTest { mConfigs.clear(); assertNull(mConfigs.getByScanResultForCurrentUser(scanResult)); } + + @Test + public void testScanResultDoesNotMatchForWifiNetworkSpecifier() { + // Add regular saved network, this should create a scan result match info cache entry. + WifiConfiguration config = WifiConfigurationTestUtil.createOpenNetwork(); + ScanResult scanResult = createScanResultForNetwork(config); + config.networkId = 5; + mConfigs.put(config); + assertNotNull(mConfigs.getByScanResultForCurrentUser(scanResult)); + + mConfigs.clear(); + + // Create WifiNetworkSpecifier network, this should not create a scan result match info + // cache entry. + config.ephemeral = true; + config.fromWifiNetworkSpecifier = true; + mConfigs.put(config); + assertNull(mConfigs.getByScanResultForCurrentUser(scanResult)); + } } -- cgit v1.2.3