summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Sudheer Shanka <sudheersai@google.com> 2022-12-07 01:46:32 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2022-12-07 01:46:32 +0000
commitcbcbf1b7cdf4ee6829e7d462a78f53f465534b4a (patch)
treef1855b740284cb849d8ccc611f82e925bbc69ea1
parentbf9e4be3053dd58731ca19358460495276dd039f (diff)
parent7705de3e986d33d30cbc6b1d035b1f222ba8452b (diff)
Merge "Apply "most-recent" delivery policy to ACTION_RSSI_CHANGED."
-rw-r--r--service/java/com/android/server/wifi/ClientModeImpl.java11
-rw-r--r--service/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java23
2 files changed, 33 insertions, 1 deletions
diff --git a/service/java/com/android/server/wifi/ClientModeImpl.java b/service/java/com/android/server/wifi/ClientModeImpl.java
index 8b3b636b02..8fd71c5fb7 100644
--- a/service/java/com/android/server/wifi/ClientModeImpl.java
+++ b/service/java/com/android/server/wifi/ClientModeImpl.java
@@ -37,6 +37,7 @@ import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.ActivityManager;
import android.app.AlarmManager;
+import android.app.BroadcastOptions;
import android.app.admin.SecurityLog;
import android.content.BroadcastReceiver;
import android.content.Context;
@@ -2755,10 +2756,18 @@ public class ClientModeImpl extends StateMachine implements ClientMode {
Intent intent = new Intent(WifiManager.RSSI_CHANGED_ACTION);
intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT);
intent.putExtra(WifiManager.EXTRA_NEW_RSSI, newRssi);
+ final BroadcastOptions opts;
+ if (SdkLevel.isAtLeastU()) {
+ opts = BroadcastOptions.makeBasic();
+ opts.setDeliveryGroupPolicy(BroadcastOptions.DELIVERY_GROUP_POLICY_MOST_RECENT);
+ } else {
+ opts = null;
+ }
mBroadcastQueue.queueOrSendBroadcast(
mClientModeManager,
() -> mContext.sendBroadcastAsUser(intent, UserHandle.ALL,
- android.Manifest.permission.ACCESS_WIFI_STATE));
+ android.Manifest.permission.ACCESS_WIFI_STATE,
+ opts == null ? null : opts.toBundle()));
}
private void sendLinkConfigurationChangedBroadcast() {
diff --git a/service/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java b/service/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java
index c563f464d2..f5b31023c3 100644
--- a/service/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java
+++ b/service/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java
@@ -76,6 +76,7 @@ import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.withSettings;
+import android.Manifest;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.ActivityManager;
@@ -143,6 +144,7 @@ import android.os.Looper;
import android.os.Messenger;
import android.os.PowerManager;
import android.os.Process;
+import android.os.UserHandle;
import android.os.test.TestLooper;
import android.provider.Settings;
import android.telephony.TelephonyManager;
@@ -3424,6 +3426,7 @@ public class ClientModeImplTest extends WifiBaseTest {
mCmi.enableRssiPolling(true);
connect();
mLooper.dispatchAll();
+ assertRssiChangeBroadcastSent();
when(mClock.getWallClockMillis()).thenReturn(startMillis + 3333);
mLooper.dispatchAll();
WifiInfo wifiInfo = mWifiInfo;
@@ -5249,6 +5252,26 @@ public class ClientModeImplTest extends WifiBaseTest {
}
return null;
}).when(mContext).sendBroadcastAsUser(any(), any(), anyString());
+
+ doAnswer(invocation -> {
+ final Intent intent = invocation.getArgument(0);
+ if (WifiManager.RSSI_CHANGED_ACTION.equals(intent.getAction())) {
+ fail("Should not send RSSI_CHANGED broadcast!");
+ }
+ return null;
+ }).when(mContext).sendBroadcastAsUser(any(), any(), anyString(), any());
+ }
+
+ /**
+ * Verifies that RSSI change broadcast is sent.
+ */
+ private void assertRssiChangeBroadcastSent() throws Exception {
+ ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
+ verify(mContext).sendBroadcastAsUser(intentCaptor.capture(),
+ eq(UserHandle.ALL), eq(Manifest.permission.ACCESS_WIFI_STATE), any());
+ Intent intent = intentCaptor.getValue();
+ assertNotNull(intent);
+ assertEquals(WifiManager.RSSI_CHANGED_ACTION, intent.getAction());
}
/**