Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f9f96b6f authored by Shen Lin's avatar Shen Lin
Browse files

Migrate to best practise to read network state

`getNetworkInfo()` has been deprecated, while the new method can
 guarantee the device has an actual network connection.

Bug: b/358407371
Test: atest core/tests/coretests/src/android/util/NtpTrustedTimeTest
Test: Treehugger
Change-Id: I8c188859385c2b499280af5c4f27623c8e7dc29d
parent af64d587
Loading
Loading
Loading
Loading
+13 −5
Original line number Diff line number Diff line
@@ -24,7 +24,7 @@ import android.content.Context;
import android.content.res.Resources;
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkInfo;
import android.net.NetworkCapabilities;
import android.net.SntpClient;
import android.os.Build;
import android.os.SystemClock;
@@ -687,8 +687,16 @@ public abstract class NtpTrustedTime implements TrustedTime {
            if (connectivityManager == null) {
                return false;
            }
            final NetworkInfo ni = connectivityManager.getNetworkInfo(network);

            final NetworkCapabilities networkCapabilities =
                    connectivityManager.getNetworkCapabilities(network);
            if (networkCapabilities == null) {
                if (LOGD) Log.d(TAG, "getNetwork: failed to get network capabilities");
                return false;
            }
            final boolean isConnectedToInternet = networkCapabilities.hasCapability(
                    NetworkCapabilities.NET_CAPABILITY_INTERNET)
                    && networkCapabilities.hasCapability(
                    NetworkCapabilities.NET_CAPABILITY_VALIDATED);
            // This connectivity check is to avoid performing a DNS lookup for the time server on a
            // unconnected network. There are races to obtain time in Android when connectivity
            // changes, which means that forceRefresh() can be called by various components before
@@ -698,8 +706,8 @@ public abstract class NtpTrustedTime implements TrustedTime {
            // A side effect of check is that tests that run a fake NTP server on the device itself
            // will only be able to use it if the active network is connected, even though loopback
            // addresses are actually reachable.
            if (ni == null || !ni.isConnected()) {
                if (LOGD) Log.d(TAG, "getNetwork: no connectivity");
            if (!isConnectedToInternet) {
                if (LOGD) Log.d(TAG, "getNetwork: no internet connectivity");
                return false;
            }
            return true;