diff options
author | Xin Li <delphij@google.com> | 2024-03-07 06:41:08 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2024-03-07 06:41:08 +0000 |
commit | 492983e9a0a81933da4c2105e0f95f1c30bd234b (patch) | |
tree | ec923bc9db380a1479ecd146416686eea6f5344d /src/java/com/android/internal/telephony/data/DataStallRecoveryManager.java | |
parent | 34573462f4fbad6d673325fc336faa2bfb6c22aa (diff) | |
parent | 1b1530f8333c205ae7c0b4ecc3347cbfcfaf0a21 (diff) | |
download | telephony-492983e9a0a81933da4c2105e0f95f1c30bd234b.tar.gz |
Merge "Merge Android 14 QPR2 to AOSP main" into main
Diffstat (limited to 'src/java/com/android/internal/telephony/data/DataStallRecoveryManager.java')
-rw-r--r-- | src/java/com/android/internal/telephony/data/DataStallRecoveryManager.java | 35 |
1 files changed, 23 insertions, 12 deletions
diff --git a/src/java/com/android/internal/telephony/data/DataStallRecoveryManager.java b/src/java/com/android/internal/telephony/data/DataStallRecoveryManager.java index 375b2503a7..f2b677692b 100644 --- a/src/java/com/android/internal/telephony/data/DataStallRecoveryManager.java +++ b/src/java/com/android/internal/telephony/data/DataStallRecoveryManager.java @@ -25,6 +25,7 @@ import android.annotation.NonNull; import android.content.Intent; import android.database.ContentObserver; import android.net.NetworkAgent; +import android.net.NetworkCapabilities; import android.net.Uri; import android.os.Bundle; import android.os.Handler; @@ -56,7 +57,7 @@ import java.io.PrintWriter; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.Arrays; -import java.util.List; +import java.util.Set; import java.util.concurrent.Executor; /** @@ -191,7 +192,7 @@ public class DataStallRecoveryManager extends Handler { private boolean mMobileDataChangedToEnabledDuringDataStall; /** Whether attempted all recovery steps. */ private boolean mIsAttemptedAllSteps; - /** Whether internet network connected. */ + /** Whether internet network that require validation is connected. */ private boolean mIsInternetNetworkConnected; /** The durations for current recovery action */ private @ElapsedRealtimeLong long mTimeElapsedOfCurrentAction; @@ -307,16 +308,26 @@ public class DataStallRecoveryManager extends Handler { } @Override - public void onInternetDataNetworkConnected( - @NonNull List<DataNetwork> internetNetworks) { - mIsInternetNetworkConnected = true; - logl("onInternetDataNetworkConnected"); - } - - @Override - public void onInternetDataNetworkDisconnected() { - mIsInternetNetworkConnected = false; - logl("onInternetDataNetworkDisconnected"); + public void onConnectedInternetDataNetworksChanged( + @NonNull Set<DataNetwork> internetNetworks) { + boolean anyInternetRequireValidatedConnected = internetNetworks.stream() + .anyMatch(nw -> { + NetworkCapabilities capabilities = nw.getNetworkCapabilities(); + // Only track the networks that require validation. + // The criteria is base on NetworkMonitorUtils.java. + return capabilities.hasCapability( + NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED) + && capabilities.hasCapability( + NetworkCapabilities.NET_CAPABILITY_TRUSTED) + && capabilities.hasCapability( + NetworkCapabilities.NET_CAPABILITY_NOT_VPN); + }); + if (mIsInternetNetworkConnected != anyInternetRequireValidatedConnected) { + mIsInternetNetworkConnected = anyInternetRequireValidatedConnected; + logl(mIsInternetNetworkConnected + ? "At Least One InternetDataNetwork Connected" + : "All InternetDataNetwork Disconnected"); + } } }); mPhone.mCi.registerForRadioStateChanged(this, EVENT_RADIO_STATE_CHANGED, null); |