diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-12-02 02:17:04 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-12-02 02:17:04 +0000 |
commit | 990130261770b0bfe9f8ba9203dd001499c2ba19 (patch) | |
tree | fd0bbeac22ab0f144a104ba29d419a95bf63456d | |
parent | a271d9d22d6a4e9b4bf6071b7541ca31ce1f46f3 (diff) | |
parent | 842b89a9def5dad1fa5b52f218e0b50d720e2a8f (diff) | |
download | wifi-990130261770b0bfe9f8ba9203dd001499c2ba19.tar.gz |
Snap for 11169761 from 842b89a9def5dad1fa5b52f218e0b50d720e2a8f to 24Q1-release
Change-Id: I0b474c41691e58957a75297bba4aae9cc3c671ba
-rw-r--r-- | libs/WifiTrackerLib/src/com/android/wifitrackerlib/HotspotNetworkEntry.java | 15 | ||||
-rw-r--r-- | libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/HotspotNetworkEntryTest.java | 159 |
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, |