summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--service/java/com/android/server/wifi/DeviceConfigFacade.java30
-rw-r--r--tests/wifitests/src/com/android/server/wifi/DeviceConfigFacadeTest.java19
2 files changed, 49 insertions, 0 deletions
diff --git a/service/java/com/android/server/wifi/DeviceConfigFacade.java b/service/java/com/android/server/wifi/DeviceConfigFacade.java
index c5ca3c913..1c59797fe 100644
--- a/service/java/com/android/server/wifi/DeviceConfigFacade.java
+++ b/service/java/com/android/server/wifi/DeviceConfigFacade.java
@@ -19,10 +19,13 @@ package com.android.server.wifi;
import android.content.Context;
import android.os.Handler;
import android.provider.DeviceConfig;
+import android.util.ArraySet;
import com.android.internal.annotations.VisibleForTesting;
import com.android.wifi.R;
+import java.util.Collections;
+import java.util.Set;
import java.util.concurrent.TimeUnit;
/**
@@ -60,6 +63,7 @@ public class DeviceConfigFacade {
private int mDataStallRxTputThrKbps;
private int mDataStallTxPerThr;
private int mDataStallCcaLevelThr;
+ private Set<String> mRandomizationFlakySsidHotlist;
public DeviceConfigFacade(Context context, Handler handler, WifiMetrics wifiMetrics) {
mContext = context;
@@ -101,6 +105,25 @@ public class DeviceConfigFacade {
mWifiMetrics.setDataStallRxTputThrKbps(mDataStallRxTputThrKbps);
mWifiMetrics.setDataStallTxPerThr(mDataStallTxPerThr);
mWifiMetrics.setDataStallCcaLevelThr(mDataStallCcaLevelThr);
+
+ createUnmodifiableRandomizationFlakySsidHotlist();
+ }
+
+ private void createUnmodifiableRandomizationFlakySsidHotlist() {
+ String ssidHotlist = DeviceConfig.getString(NAMESPACE,
+ "randomization_flaky_ssid_hotlist", "");
+ mRandomizationFlakySsidHotlist = new ArraySet<String>();
+ String[] ssidHotlistArray = ssidHotlist.split(",");
+ for (int i = 0; i < ssidHotlistArray.length; i++) {
+ String cur = ssidHotlistArray[i];
+ if (cur.length() == 0) {
+ continue;
+ }
+ // Make sure the SSIDs are quoted. Server side should not quote ssids.
+ mRandomizationFlakySsidHotlist.add("\"" + cur + "\"");
+ }
+ mRandomizationFlakySsidHotlist =
+ Collections.unmodifiableSet(mRandomizationFlakySsidHotlist);
}
/**
@@ -158,4 +181,11 @@ public class DeviceConfigFacade {
public int getDataStallCcaLevelThr() {
return mDataStallCcaLevelThr;
}
+
+ /**
+ * Gets the Set of SSIDs in the flaky SSID hotlist.
+ */
+ public Set<String> getRandomizationFlakySsidHotlist() {
+ return mRandomizationFlakySsidHotlist;
+ }
}
diff --git a/tests/wifitests/src/com/android/server/wifi/DeviceConfigFacadeTest.java b/tests/wifitests/src/com/android/server/wifi/DeviceConfigFacadeTest.java
index e23d402aa..900d3a7f3 100644
--- a/tests/wifitests/src/com/android/server/wifi/DeviceConfigFacadeTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/DeviceConfigFacadeTest.java
@@ -28,6 +28,7 @@ import android.os.Handler;
import android.os.test.TestLooper;
import android.provider.DeviceConfig;
import android.provider.DeviceConfig.OnPropertiesChangedListener;
+import android.util.ArraySet;
import androidx.test.filters.SmallTest;
@@ -42,6 +43,9 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.MockitoSession;
+import java.util.Collections;
+import java.util.Set;
+
/**
* Unit tests for {@link com.android.server.wifi.DeviceConfigFacade}.
@@ -88,6 +92,12 @@ public class DeviceConfigFacadeTest extends WifiBaseTest {
return def;
}
});
+ when(DeviceConfig.getString(anyString(), anyString(), anyString()))
+ .then(new AnswerWithArguments() {
+ public String answer(String namespace, String field, String def) {
+ return def;
+ }
+ });
mDeviceConfigFacade = new DeviceConfigFacade(mContext, new Handler(mLooper.getLooper()),
mWifiMetrics);
@@ -125,6 +135,8 @@ public class DeviceConfigFacadeTest extends WifiBaseTest {
mDeviceConfigFacade.getDataStallTxPerThr());
assertEquals(DeviceConfigFacade.DEFAULT_DATA_STALL_CCA_LEVEL_THR,
mDeviceConfigFacade.getDataStallCcaLevelThr());
+ assertEquals(Collections.emptySet(),
+ mDeviceConfigFacade.getRandomizationFlakySsidHotlist());
// Simulate updating the fields
when(DeviceConfig.getBoolean(anyString(), eq("abnormal_connection_bugreport_enabled"),
@@ -144,9 +156,14 @@ public class DeviceConfigFacadeTest extends WifiBaseTest {
anyInt())).thenReturn(95);
when(DeviceConfig.getInt(anyString(), eq("data_stall_cca_level_thr"),
anyInt())).thenReturn(80);
+ when(DeviceConfig.getString(anyString(), eq("randomization_flaky_ssid_hotlist"),
+ anyString())).thenReturn("ssid_1,ssid_2");
mOnPropertiesChangedListenerCaptor.getValue().onPropertiesChanged(null);
// Verifying fields are updated to the new values
+ Set<String> randomizationFlakySsidSet = new ArraySet<>();
+ randomizationFlakySsidSet.add("\"ssid_1\"");
+ randomizationFlakySsidSet.add("\"ssid_2\"");
assertEquals(true, mDeviceConfigFacade.isAbnormalConnectionBugreportEnabled());
assertEquals(100, mDeviceConfigFacade.getAbnormalConnectionDurationMs());
assertEquals(true, mDeviceConfigFacade.isAggressiveMacRandomizationSsidWhitelistEnabled());
@@ -155,5 +172,7 @@ public class DeviceConfigFacadeTest extends WifiBaseTest {
assertEquals(1500, mDeviceConfigFacade.getDataStallRxTputThrKbps());
assertEquals(95, mDeviceConfigFacade.getDataStallTxPerThr());
assertEquals(80, mDeviceConfigFacade.getDataStallCcaLevelThr());
+ assertEquals(randomizationFlakySsidSet,
+ mDeviceConfigFacade.getRandomizationFlakySsidHotlist());
}
}