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

Commit 906bfd89 authored by yinxu's avatar yinxu Committed by Lucas Dupin
Browse files

Move the blocking API to a backgound thread

Bug: 190376958
Test: Manual testing
Change-Id: Ie0f40bbdb9e312156d362095e692140956b470f6
parent 95db721b
Loading
Loading
Loading
Loading
+25 −14
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.net.wifi.WifiNetworkScoreCache;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Looper;
import android.provider.Settings;

@@ -53,20 +54,15 @@ public class WifiStatusTracker {
    private final WifiManager mWifiManager;
    private final NetworkScoreManager mNetworkScoreManager;
    private final ConnectivityManager mConnectivityManager;
    private final Handler mHandler = new Handler(Looper.getMainLooper());
    private final HandlerThread mHandlerThread;
    private final Handler mHandler;
    private final Handler mMainThreadHandler = new Handler(Looper.getMainLooper());
    private final Set<Integer> mNetworks = new HashSet<>();
    // Save the previous HISTORY_SIZE states for logging.
    private final String[] mHistory = new String[HISTORY_SIZE];
    // Where to copy the next state into.
    private int mHistoryIndex;
    private final WifiNetworkScoreCache.CacheListener mCacheListener =
            new WifiNetworkScoreCache.CacheListener(mHandler) {
                @Override
                public void networkCacheUpdated(List<ScoredNetwork> updatedNetworks) {
                    updateStatusLabel();
                    mCallback.run();
                }
            };
    private final WifiNetworkScoreCache.CacheListener mCacheListener;
    private final NetworkRequest mNetworkRequest = new NetworkRequest.Builder()
            .clearCapabilities()
            .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)
@@ -113,7 +109,7 @@ public class WifiStatusTracker {
            }
            updateWifiInfo(wifiInfo);
            updateStatusLabel();
            mCallback.run();
            mMainThreadHandler.post(() -> postResults());
        }

        @Override
@@ -128,7 +124,7 @@ public class WifiStatusTracker {
                mNetworks.remove(network.getNetId());
                updateWifiInfo(null);
                updateStatusLabel();
                mCallback.run();
                mMainThreadHandler.post(() -> postResults());
            }
        }
    };
@@ -143,7 +139,7 @@ public class WifiStatusTracker {
            mDefaultNetwork = network;
            mDefaultNetworkCapabilities = nc;
            updateStatusLabel();
            mCallback.run();
            mMainThreadHandler.post(() -> postResults());
        }
        @Override
        public void onLost(Network network) {
@@ -151,7 +147,7 @@ public class WifiStatusTracker {
            mDefaultNetwork = null;
            mDefaultNetworkCapabilities = null;
            updateStatusLabel();
            mCallback.run();
            mMainThreadHandler.post(() -> postResults());
        }
    };
    private Network mDefaultNetwork = null;
@@ -180,6 +176,17 @@ public class WifiStatusTracker {
        mNetworkScoreManager = networkScoreManager;
        mConnectivityManager = connectivityManager;
        mCallback = callback;
        mHandlerThread = new HandlerThread("WifiStatusTrackerHandler");
        mHandlerThread.start();
        mHandler = new Handler(mHandlerThread.getLooper());
        mCacheListener =
                new WifiNetworkScoreCache.CacheListener(mHandler) {
                    @Override
                    public void networkCacheUpdated(List<ScoredNetwork> updatedNetworks) {
                        updateStatusLabel();
                        mMainThreadHandler.post(() -> postResults());
                    }
                };
    }

    public void setListening(boolean listening) {
@@ -332,7 +339,7 @@ public class WifiStatusTracker {
    /** Refresh the status label on Locale changed. */
    public void refreshLocale() {
        updateStatusLabel();
        mCallback.run();
        mMainThreadHandler.post(() -> postResults());
    }

    private String getValidSsid(WifiInfo info) {
@@ -348,6 +355,10 @@ public class WifiStatusTracker {
        mHistoryIndex = (mHistoryIndex + 1) % HISTORY_SIZE;
    }

    private void postResults() {
        mCallback.run();
    }

    /** Dump function. */
    public void dump(PrintWriter pw) {
        pw.println("  - WiFi Network History ------");