summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-12-02 02:17:04 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-12-02 02:17:04 +0000
commit990130261770b0bfe9f8ba9203dd001499c2ba19 (patch)
treefd0bbeac22ab0f144a104ba29d419a95bf63456d
parenta271d9d22d6a4e9b4bf6071b7541ca31ce1f46f3 (diff)
parent842b89a9def5dad1fa5b52f218e0b50d720e2a8f (diff)
downloadwifi-990130261770b0bfe9f8ba9203dd001499c2ba19.tar.gz
Snap for 11169761 from 842b89a9def5dad1fa5b52f218e0b50d720e2a8f to 24Q1-release
Change-Id: I0b474c41691e58957a75297bba4aae9cc3c671ba
-rw-r--r--libs/WifiTrackerLib/src/com/android/wifitrackerlib/HotspotNetworkEntry.java15
-rw-r--r--libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/HotspotNetworkEntryTest.java159
2 files changed, 170 insertions, 4 deletions
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/HotspotNetworkEntry.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/HotspotNetworkEntry.java
index 4a1341454..cccb6dea7 100644
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/HotspotNetworkEntry.java
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/HotspotNetworkEntry.java
@@ -39,6 +39,7 @@ import androidx.annotation.IntRange;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.WorkerThread;
+import androidx.core.os.BuildCompat;
import org.json.JSONException;
import org.json.JSONObject;
@@ -59,6 +60,8 @@ public class HotspotNetworkEntry extends WifiEntry {
static final String TAG = "HotspotNetworkEntry";
public static final String KEY_PREFIX = "HotspotNetworkEntry:";
+ public static final String EXTRA_KEY_IS_BATTERY_CHARGING = "is_battery_charging";
+
@NonNull private final WifiTrackerInjector mInjector;
@NonNull private final Context mContext;
@Nullable private final SharedConnectivityManager mSharedConnectivityManager;
@@ -351,11 +354,17 @@ public class HotspotNetworkEntry extends WifiEntry {
* If the host device is currently charging its battery.
*/
public synchronized boolean isBatteryCharging() {
- if (mHotspotNetworkData == null
- || !NonSdkApiWrapper.isNetworkProviderBatteryChargingStatusEnabled()) {
+ if (mHotspotNetworkData == null) {
return false;
}
- return mHotspotNetworkData.getNetworkProviderInfo().isBatteryCharging();
+ if (BuildCompat.isAtLeastV()
+ && NonSdkApiWrapper.isNetworkProviderBatteryChargingStatusEnabled()
+ && mHotspotNetworkData.getNetworkProviderInfo().isBatteryCharging()) {
+ return true;
+ }
+ // With API flag on we still support either the API or the bundle for compatibility.
+ return mHotspotNetworkData.getNetworkProviderInfo().getExtras().getBoolean(
+ EXTRA_KEY_IS_BATTERY_CHARGING, false);
}
@Override
diff --git a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/HotspotNetworkEntryTest.java b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/HotspotNetworkEntryTest.java
index e4168e489..a664a92d2 100644
--- a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/HotspotNetworkEntryTest.java
+++ b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/HotspotNetworkEntryTest.java
@@ -48,6 +48,7 @@ import android.net.wifi.sharedconnectivity.app.HotspotNetwork;
import android.net.wifi.sharedconnectivity.app.HotspotNetworkConnectionStatus;
import android.net.wifi.sharedconnectivity.app.NetworkProviderInfo;
import android.net.wifi.sharedconnectivity.app.SharedConnectivityManager;
+import android.os.Bundle;
import android.os.Handler;
import android.os.test.TestLooper;
import android.platform.test.flag.junit.CheckFlagsRule;
@@ -485,7 +486,7 @@ public class HotspotNetworkEntryTest {
}
@Test
- public void testIsBatteryCharging_usesHotspotNetworkData() {
+ public void testIsBatteryCharging_apiFlagOn_usesHotspotNetworkDataApi() {
final HotspotNetworkEntry entry = new HotspotNetworkEntry(
mMockInjector, mMockContext, mTestHandler,
mMockWifiManager, mMockSharedConnectivityManager,
@@ -515,6 +516,162 @@ public class HotspotNetworkEntryTest {
}
@Test
+ public void testIsBatteryCharging_apiFlagOn_usesHotspotNetworkDataExtras() {
+ final Bundle extras = new Bundle();
+ extras.putBoolean(HotspotNetworkEntry.EXTRA_KEY_IS_BATTERY_CHARGING, true);
+ final HotspotNetworkEntry entry = new HotspotNetworkEntry(
+ mMockInjector, mMockContext, mTestHandler,
+ mMockWifiManager, mMockSharedConnectivityManager,
+ new HotspotNetwork.Builder()
+ .setDeviceId(1)
+ .setNetworkProviderInfo(new NetworkProviderInfo
+ .Builder("My Phone", "Pixel 7")
+ .setDeviceType(NetworkProviderInfo.DEVICE_TYPE_PHONE)
+ .setBatteryPercentage(100)
+ .setConnectionStrength(3)
+ .setBatteryCharging(false)
+ .setExtras(extras)
+ .build())
+ .setHostNetworkType(HotspotNetwork.NETWORK_TYPE_CELLULAR)
+ .setNetworkName("Google Fi")
+ .setHotspotSsid("Instant Hotspot abcde")
+ .addHotspotSecurityType(SECURITY_TYPE_PSK)
+ .build());
+
+ MockitoSession session = mockitoSession().spyStatic(NonSdkApiWrapper.class).startMocking();
+ try {
+ doReturn(true).when(() ->
+ NonSdkApiWrapper.isNetworkProviderBatteryChargingStatusEnabled());
+ assertThat(entry.isBatteryCharging()).isTrue();
+ } finally {
+ session.finishMocking();
+ }
+ }
+
+ @Test
+ public void testIsBatteryCharging_apiFlagOff_usesHotspotNetworkDataExtras() {
+ final Bundle extras = new Bundle();
+ extras.putBoolean(HotspotNetworkEntry.EXTRA_KEY_IS_BATTERY_CHARGING, true);
+ final HotspotNetworkEntry entry = new HotspotNetworkEntry(
+ mMockInjector, mMockContext, mTestHandler,
+ mMockWifiManager, mMockSharedConnectivityManager,
+ new HotspotNetwork.Builder()
+ .setDeviceId(1)
+ .setNetworkProviderInfo(new NetworkProviderInfo
+ .Builder("My Phone", "Pixel 7")
+ .setDeviceType(NetworkProviderInfo.DEVICE_TYPE_PHONE)
+ .setBatteryPercentage(100)
+ .setConnectionStrength(3)
+ .setExtras(extras)
+ .build())
+ .setHostNetworkType(HotspotNetwork.NETWORK_TYPE_CELLULAR)
+ .setNetworkName("Google Fi")
+ .setHotspotSsid("Instant Hotspot abcde")
+ .addHotspotSecurityType(SECURITY_TYPE_PSK)
+ .build());
+
+ MockitoSession session = mockitoSession().spyStatic(NonSdkApiWrapper.class).startMocking();
+ try {
+ doReturn(false).when(() ->
+ NonSdkApiWrapper.isNetworkProviderBatteryChargingStatusEnabled());
+ assertThat(entry.isBatteryCharging()).isTrue();
+ } finally {
+ session.finishMocking();
+ }
+ }
+
+ @Test
+ public void testIsBatteryCharging_apiFlagOn_extraFalse() {
+ final Bundle extras = new Bundle();
+ extras.putBoolean(HotspotNetworkEntry.EXTRA_KEY_IS_BATTERY_CHARGING, false);
+ final HotspotNetworkEntry entry = new HotspotNetworkEntry(
+ mMockInjector, mMockContext, mTestHandler,
+ mMockWifiManager, mMockSharedConnectivityManager,
+ new HotspotNetwork.Builder()
+ .setDeviceId(1)
+ .setNetworkProviderInfo(new NetworkProviderInfo
+ .Builder("My Phone", "Pixel 7")
+ .setDeviceType(NetworkProviderInfo.DEVICE_TYPE_PHONE)
+ .setBatteryPercentage(100)
+ .setConnectionStrength(3)
+ .setExtras(extras)
+ .build())
+ .setHostNetworkType(HotspotNetwork.NETWORK_TYPE_CELLULAR)
+ .setNetworkName("Google Fi")
+ .setHotspotSsid("Instant Hotspot abcde")
+ .addHotspotSecurityType(SECURITY_TYPE_PSK)
+ .build());
+
+ MockitoSession session = mockitoSession().spyStatic(NonSdkApiWrapper.class).startMocking();
+ try {
+ doReturn(true).when(() ->
+ NonSdkApiWrapper.isNetworkProviderBatteryChargingStatusEnabled());
+ assertThat(entry.isBatteryCharging()).isFalse();
+ } finally {
+ session.finishMocking();
+ }
+ }
+
+ @Test
+ public void testIsBatteryCharging_apiFlagOn_apiFalse() {
+ final HotspotNetworkEntry entry = new HotspotNetworkEntry(
+ mMockInjector, mMockContext, mTestHandler,
+ mMockWifiManager, mMockSharedConnectivityManager,
+ new HotspotNetwork.Builder()
+ .setDeviceId(1)
+ .setNetworkProviderInfo(new NetworkProviderInfo
+ .Builder("My Phone", "Pixel 7")
+ .setDeviceType(NetworkProviderInfo.DEVICE_TYPE_PHONE)
+ .setBatteryPercentage(100)
+ .setConnectionStrength(3)
+ .setBatteryCharging(false)
+ .build())
+ .setHostNetworkType(HotspotNetwork.NETWORK_TYPE_CELLULAR)
+ .setNetworkName("Google Fi")
+ .setHotspotSsid("Instant Hotspot abcde")
+ .addHotspotSecurityType(SECURITY_TYPE_PSK)
+ .build());
+
+ MockitoSession session = mockitoSession().spyStatic(NonSdkApiWrapper.class).startMocking();
+ try {
+ doReturn(true).when(() ->
+ NonSdkApiWrapper.isNetworkProviderBatteryChargingStatusEnabled());
+ assertThat(entry.isBatteryCharging()).isFalse();
+ } finally {
+ session.finishMocking();
+ }
+ }
+
+ @Test
+ public void testIsBatteryCharging_apiFlagOn_noneSet() {
+ final HotspotNetworkEntry entry = new HotspotNetworkEntry(
+ mMockInjector, mMockContext, mTestHandler,
+ mMockWifiManager, mMockSharedConnectivityManager,
+ 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")
+ .setHotspotSsid("Instant Hotspot abcde")
+ .addHotspotSecurityType(SECURITY_TYPE_PSK)
+ .build());
+
+ MockitoSession session = mockitoSession().spyStatic(NonSdkApiWrapper.class).startMocking();
+ try {
+ doReturn(true).when(() ->
+ NonSdkApiWrapper.isNetworkProviderBatteryChargingStatusEnabled());
+ assertThat(entry.isBatteryCharging()).isFalse();
+ } finally {
+ session.finishMocking();
+ }
+ }
+
+ @Test
public void testGetLevel_statusNotConnected_returnsMaxValue() {
final HotspotNetworkEntry entry = new HotspotNetworkEntry(
mMockInjector, mMockContext, mTestHandler,