summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--PREUPLOAD.cfg2
-rw-r--r--service/java/com/android/server/wifi/ActiveModeManager.java3
-rw-r--r--service/java/com/android/server/wifi/ActiveModeWarden.java5
-rw-r--r--service/java/com/android/server/wifi/ConcreteClientModeManager.java2
-rw-r--r--service/java/com/android/server/wifi/DefaultClientModeManager.java3
-rw-r--r--service/java/com/android/server/wifi/SoftApManager.java2
-rw-r--r--service/java/com/android/server/wifi/WifiServiceImpl.java4
-rw-r--r--service/tests/wifitests/src/com/android/server/wifi/ActiveModeWardenTest.java30
8 files changed, 42 insertions, 9 deletions
diff --git a/PREUPLOAD.cfg b/PREUPLOAD.cfg
index 32b4e3bb6a..20b6ab2111 100644
--- a/PREUPLOAD.cfg
+++ b/PREUPLOAD.cfg
@@ -1,6 +1,6 @@
[Hook Scripts]
checkstyle_hook = ${REPO_ROOT}/prebuilts/checkstyle/checkstyle.py --sha ${PREUPLOAD_COMMIT}
-metrics_pdd_hook = ${REPO_ROOT}/frameworks/opt/net/wifi/metrics_pdd_hook.py "service/proto/src/metrics.proto" ${PREUPLOAD_COMMIT_MESSAGE} ${PREUPLOAD_FILES}
+metrics_pdd_hook = ${REPO_ROOT}/packages/modules/Wifi/metrics_pdd_hook.py "service/proto/src/metrics.proto" ${PREUPLOAD_COMMIT_MESSAGE} ${PREUPLOAD_FILES}
[Builtin Hooks]
commit_msg_bug_field = true
diff --git a/service/java/com/android/server/wifi/ActiveModeManager.java b/service/java/com/android/server/wifi/ActiveModeManager.java
index 40fba52ab3..44d8576018 100644
--- a/service/java/com/android/server/wifi/ActiveModeManager.java
+++ b/service/java/com/android/server/wifi/ActiveModeManager.java
@@ -17,6 +17,7 @@
package com.android.server.wifi;
import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.os.WorkSource;
import java.io.FileDescriptor;
@@ -138,7 +139,7 @@ public interface ActiveModeManager {
/**
* Method to get the role for a mode manager.
*/
- Role getRole();
+ @Nullable Role getRole();
/**
* Method to get the iface name for the mode manager.
diff --git a/service/java/com/android/server/wifi/ActiveModeWarden.java b/service/java/com/android/server/wifi/ActiveModeWarden.java
index cb647527b5..e475176646 100644
--- a/service/java/com/android/server/wifi/ActiveModeWarden.java
+++ b/service/java/com/android/server/wifi/ActiveModeWarden.java
@@ -779,10 +779,11 @@ public class ActiveModeWarden {
/** Get all client mode managers in the specified roles. */
@NonNull
public List<ConcreteClientModeManager> getClientModeManagersInRoles(ClientRole... roles) {
- Set<ClientRole> rolesList = Set.of(roles);
+ Set<ClientRole> rolesSet = Set.of(roles);
List<ConcreteClientModeManager> result = new ArrayList<>();
for (ConcreteClientModeManager manager : mClientModeManagers) {
- if (rolesList.contains(manager.getRole())) {
+ ClientRole role = manager.getRole();
+ if (role != null && rolesSet.contains(role)) {
result.add(manager);
}
}
diff --git a/service/java/com/android/server/wifi/ConcreteClientModeManager.java b/service/java/com/android/server/wifi/ConcreteClientModeManager.java
index 9ef9bf70f2..89b8278c51 100644
--- a/service/java/com/android/server/wifi/ConcreteClientModeManager.java
+++ b/service/java/com/android/server/wifi/ConcreteClientModeManager.java
@@ -424,7 +424,7 @@ public class ConcreteClientModeManager implements ClientModeManager {
}
@Override
- public ClientRole getRole() {
+ @Nullable public ClientRole getRole() {
return mRole;
}
diff --git a/service/java/com/android/server/wifi/DefaultClientModeManager.java b/service/java/com/android/server/wifi/DefaultClientModeManager.java
index 7f34befd26..3ff79a91d4 100644
--- a/service/java/com/android/server/wifi/DefaultClientModeManager.java
+++ b/service/java/com/android/server/wifi/DefaultClientModeManager.java
@@ -16,6 +16,7 @@
package com.android.server.wifi;
+import android.annotation.Nullable;
import android.net.wifi.WifiManager;
import android.os.WorkSource;
@@ -37,7 +38,7 @@ public class DefaultClientModeManager implements ClientModeManager, ClientModeDe
}
@Override
- public ClientRole getRole() {
+ @Nullable public ClientRole getRole() {
return null;
}
diff --git a/service/java/com/android/server/wifi/SoftApManager.java b/service/java/com/android/server/wifi/SoftApManager.java
index 9a3d2fd6b1..8915a2442c 100644
--- a/service/java/com/android/server/wifi/SoftApManager.java
+++ b/service/java/com/android/server/wifi/SoftApManager.java
@@ -267,7 +267,7 @@ public class SoftApManager implements ActiveModeManager {
}
@Override
- public SoftApRole getRole() {
+ @Nullable public SoftApRole getRole() {
return mRole;
}
diff --git a/service/java/com/android/server/wifi/WifiServiceImpl.java b/service/java/com/android/server/wifi/WifiServiceImpl.java
index e35bd55a59..7c41a1e2d4 100644
--- a/service/java/com/android/server/wifi/WifiServiceImpl.java
+++ b/service/java/com/android/server/wifi/WifiServiceImpl.java
@@ -2967,8 +2967,8 @@ public class WifiServiceImpl extends BaseWifiService {
long ident = Binder.clearCallingIdentity();
try {
WifiInfo result = mWifiThreadRunner.call(
- getClientModeManagerForConnectionInfo(uid, callingPackage)
- ::syncRequestConnectionInfo, new WifiInfo());
+ () -> getClientModeManagerForConnectionInfo(uid, callingPackage)
+ .syncRequestConnectionInfo(), new WifiInfo());
boolean hideDefaultMacAddress = true;
boolean hideBssidSsidNetworkIdAndFqdn = true;
diff --git a/service/tests/wifitests/src/com/android/server/wifi/ActiveModeWardenTest.java b/service/tests/wifitests/src/com/android/server/wifi/ActiveModeWardenTest.java
index a64ec9661f..4c9ae4ffcd 100644
--- a/service/tests/wifitests/src/com/android/server/wifi/ActiveModeWardenTest.java
+++ b/service/tests/wifitests/src/com/android/server/wifi/ActiveModeWardenTest.java
@@ -3277,4 +3277,34 @@ public class ActiveModeWardenTest extends WifiBaseTest {
// Ensure we get the callback immediately.
verify(primarCmmCallback).onChange(null, mClientModeManager);
}
+
+ @Test
+ public void testGetCmmInRolesWithNullRoleInOneCmm() throws Exception {
+ enterClientModeActiveState();
+
+ // Ensure that we can create more client ifaces.
+ when(mWifiNative.isItPossibleToCreateStaIface(any())).thenReturn(true);
+ when(mResources.getBoolean(R.bool.config_wifiMultiStaLocalOnlyConcurrencyEnabled))
+ .thenReturn(true);
+
+ ConcreteClientModeManager additionalClientModeManager =
+ mock(ConcreteClientModeManager.class);
+ when(mWifiInjector.makeClientModeManager(
+ any(), any(), any(), anyBoolean())).thenReturn(additionalClientModeManager);
+
+ mActiveModeWarden.requestLocalOnlyClientModeManager(
+ mock(ActiveModeWarden.ExternalClientModeManagerRequestListener.class),
+ TEST_WORKSOURCE, TEST_SSID_2, TEST_BSSID_2);
+ mLooper.dispatchAll();
+
+ // No role set, should be ignored.
+ when(additionalClientModeManager.getRole()).thenReturn(null);
+ assertEquals(1, mActiveModeWarden.getClientModeManagersInRoles(
+ ROLE_CLIENT_PRIMARY, ROLE_CLIENT_LOCAL_ONLY).size());
+
+ // Role set, should be included.
+ when(additionalClientModeManager.getRole()).thenReturn(ROLE_CLIENT_LOCAL_ONLY);
+ assertEquals(2, mActiveModeWarden.getClientModeManagersInRoles(
+ ROLE_CLIENT_PRIMARY, ROLE_CLIENT_LOCAL_ONLY).size());
+ }
}