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

Commit c0b98527 authored by Mohammed Althaf T's avatar Mohammed Althaf T 😊 Committed by Nishith Khanna
Browse files

sdk: Register network callback only if it is enabled.

Change-Id: I8c11ac84e9a18c38c5909a8d012c8e3badfe1a16
parent 5b9aab61
Loading
Loading
Loading
Loading
+72 −37
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@ import android.graphics.PorterDuffColorFilter;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.net.ConnectivityManager;
import android.net.ConnectivityManager.NetworkCallback;
import android.net.LinkProperties;
import android.net.Network;
import android.net.NetworkCapabilities;
@@ -99,6 +100,10 @@ public class NetworkTraffic extends TextView {
    private int mIconTint = Color.WHITE;
    private Drawable mDrawable;

    // Network tracking related variables
    private NetworkCallback mNetworkCallback;
    private NetworkCallback mDefaultNetworkCallback;

    private final HashMap<Network, LinkProperties> mLinkPropertiesMap = new HashMap<>();
    // Used to indicate that the set of sources contributing
    // to current stats have changed.
@@ -121,6 +126,10 @@ public class NetworkTraffic extends TextView {

        mNetworkTrafficIsVisible = false;

        ContentResolver resolver = mContext.getContentResolver();
        mMode = LineageSettings.Secure.getInt(resolver,
                LineageSettings.Secure.NETWORK_TRAFFIC_MODE, MODE_DISABLED);

        mTrafficHandler = new Handler(mContext.getMainLooper()) {
            @Override
            public void handleMessage(Message msg) {
@@ -293,13 +302,29 @@ public class NetworkTraffic extends TextView {
        };
        mObserver = new SettingsObserver(mTrafficHandler);

        // Network tracking related variables
        final NetworkRequest request = new NetworkRequest.Builder()
                .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
                .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)
                .build();
        ConnectivityManager.NetworkCallback networkCallback =
                new ConnectivityManager.NetworkCallback() {
        manageNetworkCallbacks();
    }

    private void manageNetworkCallbacks() {
        ConnectivityManager connectivityManager =
                mContext.getSystemService(ConnectivityManager.class);

        if (mMode == MODE_DISABLED) {
            // Unregister callbacks if disabling
            if (mNetworkCallback != null) {
                connectivityManager.unregisterNetworkCallback(mNetworkCallback);
                mNetworkCallback = null;
            }
            if (mDefaultNetworkCallback != null) {
                connectivityManager.unregisterNetworkCallback(mDefaultNetworkCallback);
                mDefaultNetworkCallback = null;
            }
            return;
        }

        // Register callbacks if enabling
        if (mNetworkCallback == null) {
            mNetworkCallback = new NetworkCallback() {
                @Override
                public void onLinkPropertiesChanged(Network network,
                        LinkProperties linkProperties) {
@@ -317,8 +342,17 @@ public class NetworkTraffic extends TextView {
                    mTrafficHandler.sendMessage(msg);
                }
            };
        ConnectivityManager.NetworkCallback defaultNetworkCallback =
                new ConnectivityManager.NetworkCallback() {

            NetworkRequest request = new NetworkRequest.Builder()
                    .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
                    .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)
                    .build();

            connectivityManager.registerNetworkCallback(request, mNetworkCallback);
        }

        if (mDefaultNetworkCallback == null) {
            mDefaultNetworkCallback = new NetworkCallback() {
                @Override
                public void onAvailable(Network network) {
                    updateViewState();
@@ -329,10 +363,9 @@ public class NetworkTraffic extends TextView {
                    updateViewState();
                }
            };
        context.getSystemService(ConnectivityManager.class)
                .registerNetworkCallback(request, networkCallback);
        context.getSystemService(ConnectivityManager.class)
                .registerDefaultNetworkCallback(defaultNetworkCallback);

            connectivityManager.registerDefaultNetworkCallback(mDefaultNetworkCallback);
        }
    }

    public void setViewPosition(int vpos) {
@@ -432,6 +465,8 @@ public class NetworkTraffic extends TextView {
        mShowUnits = LineageSettings.Secure.getInt(resolver,
                LineageSettings.Secure.NETWORK_TRAFFIC_SHOW_UNITS, SHOW_UNITS_ON);

        manageNetworkCallbacks();

        switch (mUnits) {
            case UNITS_KILOBITS:
                mAutoHideThreshold = AUTOHIDE_THRESHOLD_KILOBITS;