summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-12-01 00:17:41 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-12-01 00:17:41 +0000
commita271d9d22d6a4e9b4bf6071b7541ca31ce1f46f3 (patch)
tree67cd5528db6bf9da972887d6c60ace71d6c0447b
parent6b609765e5bfc6a5026e0b4e87580b3612506498 (diff)
parent7c89c01de6944eb4ee57a7e8229d7c9d454a535a (diff)
downloadwifi-a271d9d22d6a4e9b4bf6071b7541ca31ce1f46f3.tar.gz
Snap for 11162593 from 7c89c01de6944eb4ee57a7e8229d7c9d454a535a to 24Q1-release
Change-Id: I4e81b4b352d71ab6fa509842413385b81a3450b8
-rw-r--r--libs/WifiTrackerLib/src/com/android/wifitrackerlib/BaseWifiTracker.java7
-rw-r--r--libs/WifiTrackerLib/src/com/android/wifitrackerlib/HotspotNetworkEntry.java14
-rw-r--r--libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java31
-rw-r--r--libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/HotspotNetworkEntryTest.java36
-rw-r--r--libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/WifiPickerTrackerTest.java43
5 files changed, 119 insertions, 12 deletions
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/BaseWifiTracker.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/BaseWifiTracker.java
index 1e11afa2a..d704d395c 100644
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/BaseWifiTracker.java
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/BaseWifiTracker.java
@@ -344,9 +344,6 @@ public class BaseWifiTracker {
BaseWifiTracker.this.onDestroy();
}
};
- if (lifecycle != null) {
- lifecycle.addObserver(mLifecycleObserver);
- }
mContext = context;
mWifiManager = wifiManager;
mConnectivityManager = connectivityManager;
@@ -366,6 +363,10 @@ public class BaseWifiTracker {
mScanResultUpdater = new ScanResultUpdater(clock,
maxScanAgeMillis + scanIntervalMillis);
mScanner = new BaseWifiTracker.Scanner(workerHandler.getLooper());
+
+ if (lifecycle != null) { // Need to add after mScanner is initialized.
+ lifecycle.addObserver(mLifecycleObserver);
+ }
}
/**
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/HotspotNetworkEntry.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/HotspotNetworkEntry.java
index 7eb225b27..4a1341454 100644
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/HotspotNetworkEntry.java
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/HotspotNetworkEntry.java
@@ -98,6 +98,8 @@ public class HotspotNetworkEntry extends WifiEntry {
})
public @interface DeviceType {} // TODO(b/271868642): Add IfThisThanThat lint
+ public static final int CONNECTION_STATUS_CONNECTED = 10;
+
/**
* If editing this IntDef also edit the definition in:
* {@link android.net.wifi.sharedconnectivity.app.HotspotNetworkConnectionStatus}
@@ -116,6 +118,7 @@ public class HotspotNetworkEntry extends WifiEntry {
HotspotNetworkConnectionStatus.CONNECTION_STATUS_ENABLING_HOTSPOT_FAILED,
HotspotNetworkConnectionStatus.CONNECTION_STATUS_ENABLING_HOTSPOT_TIMEOUT,
HotspotNetworkConnectionStatus.CONNECTION_STATUS_CONNECT_TO_HOTSPOT_FAILED,
+ CONNECTION_STATUS_CONNECTED,
})
public @interface ConnectionStatus {} // TODO(b/271868642): Add IfThisThanThat lint
@@ -424,6 +427,17 @@ public class HotspotNetworkEntry extends WifiEntry {
mCalledConnect = false;
notifyOnUpdated();
break;
+ case CONNECTION_STATUS_CONNECTED:
+ mCallbackHandler.post(() -> {
+ final ConnectCallback connectCallback = mConnectCallback;
+ if (connectCallback != null) {
+ connectCallback.onConnectResult(
+ ConnectCallback.CONNECT_STATUS_SUCCESS);
+ }
+ });
+ mCalledConnect = false;
+ notifyOnUpdated();
+ break;
default:
// Do nothing
}
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java
index d36c62594..3ee9a4dad 100644
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java
@@ -95,6 +95,9 @@ public class WifiPickerTracker extends BaseWifiTracker {
private static final String TAG = "WifiPickerTracker";
+ private static final String EXTRA_KEY_CONNECTION_STATUS_CONNECTED =
+ "connection_status_connected";
+
private final WifiPickerTrackerCallback mListener;
// Lock object for data returned by the public API
@@ -479,15 +482,25 @@ public class WifiPickerTracker extends BaseWifiTracker {
updateWifiEntries();
}
}
- @TargetApi(VERSION_CODES.UPSIDE_DOWN_CAKE)
- @WorkerThread
- protected void handleHotspotNetworkConnectionStatusChanged(
- @NonNull HotspotNetworkConnectionStatus status) {
- mHotspotNetworkEntryCache.stream().filter(
- entry -> entry.getHotspotNetworkEntryKey().getDeviceId()
- == status.getHotspotNetwork().getDeviceId()).forEach(
- entry -> entry.onConnectionStatusChanged(status.getStatus()));
- }
+
+ @TargetApi(VERSION_CODES.UPSIDE_DOWN_CAKE)
+ @WorkerThread
+ protected void handleHotspotNetworkConnectionStatusChanged(
+ @NonNull HotspotNetworkConnectionStatus status) {
+ mHotspotNetworkEntryCache.stream()
+ .filter(
+ entry ->
+ entry.getHotspotNetworkEntryKey().getDeviceId()
+ == status.getHotspotNetwork().getDeviceId())
+ .forEach(
+ entry -> {
+ if (status.getExtras().getBoolean(EXTRA_KEY_CONNECTION_STATUS_CONNECTED, false)) {
+ entry.onConnectionStatusChanged(HotspotNetworkEntry.CONNECTION_STATUS_CONNECTED);
+ } else {
+ entry.onConnectionStatusChanged(status.getStatus());
+ }
+ });
+ }
@TargetApi(VERSION_CODES.UPSIDE_DOWN_CAKE)
@WorkerThread
diff --git a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/HotspotNetworkEntryTest.java b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/HotspotNetworkEntryTest.java
index 534646066..e4168e489 100644
--- a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/HotspotNetworkEntryTest.java
+++ b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/HotspotNetworkEntryTest.java
@@ -652,4 +652,40 @@ public class HotspotNetworkEntryTest {
assertThat(entry.getSummary()).isNotEqualTo("Connecting…");
}
+
+ @Test
+ public void testOnConnectionStatusChanged_connectedStatus_updatesString() {
+ final HotspotNetworkEntry entry = new HotspotNetworkEntry(
+ mMockInjector, mMockContext, mTestHandler,
+ mMockWifiManager, mMockSharedConnectivityManager, TEST_HOTSPOT_NETWORK_DATA);
+ entry.setListener(mMockListener);
+ entry.onConnectionStatusChanged(
+ HotspotNetworkConnectionStatus.CONNECTION_STATUS_ENABLING_HOTSPOT);
+ mTestLooper.dispatchAll();
+ assertThat(entry.getSummary()).isEqualTo("Connecting…");
+
+ entry.onConnectionStatusChanged(HotspotNetworkEntry.CONNECTION_STATUS_CONNECTED);
+ mTestLooper.dispatchAll();
+
+ assertThat(entry.getSummary()).isNotEqualTo("Connecting…");
+ }
+
+ @Test
+ public void testOnConnectionStatusChanged_connectedStatus_callsCallback() {
+ final HotspotNetworkEntry entry = new HotspotNetworkEntry(
+ mMockInjector, mMockContext, mTestHandler,
+ mMockWifiManager, mMockSharedConnectivityManager, TEST_HOTSPOT_NETWORK_DATA);
+ entry.setListener(mMockListener);
+ entry.connect(mMockConnectCallback);
+ entry.onConnectionStatusChanged(
+ HotspotNetworkConnectionStatus.CONNECTION_STATUS_ENABLING_HOTSPOT);
+ mTestLooper.dispatchAll();
+ verify(mMockConnectCallback, never()).onConnectResult(anyInt());
+
+ entry.onConnectionStatusChanged(HotspotNetworkEntry.CONNECTION_STATUS_CONNECTED);
+ mTestLooper.dispatchAll();
+
+ verify(mMockConnectCallback)
+ .onConnectResult(WifiEntry.ConnectCallback.CONNECT_STATUS_SUCCESS);
+ }
}
diff --git a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/WifiPickerTrackerTest.java b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/WifiPickerTrackerTest.java
index 0b70fed7b..6062fe112 100644
--- a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/WifiPickerTrackerTest.java
+++ b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/WifiPickerTrackerTest.java
@@ -71,6 +71,7 @@ import android.net.wifi.sharedconnectivity.app.KnownNetworkConnectionStatus;
import android.net.wifi.sharedconnectivity.app.NetworkProviderInfo;
import android.net.wifi.sharedconnectivity.app.SharedConnectivityClientCallback;
import android.net.wifi.sharedconnectivity.app.SharedConnectivityManager;
+import android.os.Bundle;
import android.os.Handler;
import android.os.test.TestLooper;
import android.telephony.SubscriptionManager;
@@ -2931,4 +2932,46 @@ public class WifiPickerTrackerTest {
assertThat(((HotspotNetworkEntry) wifiPickerTracker.getWifiEntries().get(2))
.getHotspotNetworkEntryKey().getDeviceId()).isEqualTo(1);
}
+
+ @Test
+ public void testHotspotNetworks_onHotspotNetworkConnectionStatusChanged_connectedExtra() {
+ final HotspotNetwork testHotspotNetwork =
+ new HotspotNetwork.Builder()
+ .setDeviceId(1)
+ .setNetworkProviderInfo(
+ new NetworkProviderInfo.Builder("My Phone", "Pixel 7")
+ .setDeviceType(NetworkProviderInfo.DEVICE_TYPE_PHONE)
+ .setBatteryPercentage(100)
+ .setConnectionStrength(3)
+ .build())
+ .setHostNetworkType(HotspotNetwork.NETWORK_TYPE_CELLULAR)
+ .setNetworkName("Google Fi")
+ .build();
+ when(mMockSharedConnectivityManager.getHotspotNetworks())
+ .thenReturn(Collections.singletonList(testHotspotNetwork));
+ final WifiPickerTracker wifiPickerTracker = createTestWifiPickerTracker();
+ wifiPickerTracker.onStart();
+ mTestLooper.dispatchAll();
+ verify(mMockSharedConnectivityManager)
+ .registerCallback(any(), mSharedConnectivityCallbackCaptor.capture());
+ mSharedConnectivityCallbackCaptor.getValue().onServiceConnected();
+ mTestLooper.dispatchAll();
+
+ final WifiEntry.ConnectCallback connectCallback = mock(WifiEntry.ConnectCallback.class);
+ wifiPickerTracker.getWifiEntries().get(0).connect(connectCallback);
+
+ Bundle extras = new Bundle();
+ extras.putBoolean("connection_status_connected", true);
+ mSharedConnectivityCallbackCaptor
+ .getValue()
+ .onHotspotNetworkConnectionStatusChanged(
+ new HotspotNetworkConnectionStatus.Builder()
+ .setStatus(HotspotNetworkConnectionStatus.CONNECTION_STATUS_UNKNOWN)
+ .setExtras(extras)
+ .setHotspotNetwork(testHotspotNetwork)
+ .build());
+ mTestLooper.dispatchAll();
+
+ verify(connectCallback).onConnectResult(WifiEntry.ConnectCallback.CONNECT_STATUS_SUCCESS);
+ }
}