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

Commit 33695a86 authored by yinxu's avatar yinxu
Browse files

Add dump logs for WiFi Network capabilities changes

Bug: 176428921
Test: Manual Test
Change-Id: Iff0fabfe41b01bd4ba66e5d2c68bb756ec32b443
parent 9a473648
Loading
Loading
Loading
Loading
+42 −0
Original line number Diff line number Diff line
@@ -39,6 +39,8 @@ import android.util.FeatureFlagUtils;
import com.android.settingslib.R;
import com.android.settingslib.Utils;

import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -47,6 +49,8 @@ import java.util.Set;
 * Track status of Wi-Fi for the Sys UI.
 */
public class WifiStatusTracker {
    private static final int HISTORY_SIZE = 32;
    private static final SimpleDateFormat SSDF = new SimpleDateFormat("MM-dd HH:mm:ss.SSS");
    private final Context mContext;
    private final WifiNetworkScoreCache mWifiNetworkScoreCache;
    private final WifiManager mWifiManager;
@@ -54,6 +58,10 @@ public class WifiStatusTracker {
    private final ConnectivityManager mConnectivityManager;
    private final Handler mHandler = 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
@@ -93,6 +101,13 @@ public class WifiStatusTracker {
            } else if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {
                wifiInfo = (WifiInfo) networkCapabilities.getTransportInfo();
            }
            String log = new StringBuilder()
                    .append(SSDF.format(System.currentTimeMillis())).append(",")
                    .append("onCapabilitiesChanged: ")
                    .append("network=").append(network).append(",")
                    .append("networkCapabilities=").append(networkCapabilities)
                    .toString();
            recordLastWifiNetwork(log);
            if (wifiInfo != null) {
                updateWifiInfo(wifiInfo);
                updateStatusLabel();
@@ -102,6 +117,12 @@ public class WifiStatusTracker {

        @Override
        public void onLost(Network network) {
            String log = new StringBuilder()
                    .append(SSDF.format(System.currentTimeMillis())).append(",")
                    .append("onLost: ")
                    .append("network=").append(network)
                    .toString();
            recordLastWifiNetwork(log);
            if (mNetworks.contains(network.getNetId())) {
                mNetworks.remove(network.getNetId());
                updateWifiInfo(null);
@@ -336,4 +357,25 @@ public class WifiStatusTracker {
        }
        return null;
    }

    private void recordLastWifiNetwork(String log) {
        mHistory[mHistoryIndex] = log;
        mHistoryIndex = (mHistoryIndex + 1) % HISTORY_SIZE;
    }

    /** Dump function. */
    public void dump(PrintWriter pw) {
        pw.println("  - WiFi Network History ------");
        int size = 0;
        for (int i = 0; i < HISTORY_SIZE; i++) {
            if (mHistory[i] != null) size++;
        }
        // Print out the previous states in ordered number.
        for (int i = mHistoryIndex + HISTORY_SIZE - 1;
                i >= mHistoryIndex + HISTORY_SIZE - size; i--) {
            pw.println("  Previous WiFiNetwork("
                    + (mHistoryIndex + HISTORY_SIZE - i) + "): "
                    + mHistory[i & (HISTORY_SIZE - 1)]);
        }
    }
}
+7 −0
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ import com.android.systemui.R;
import com.android.systemui.statusbar.policy.NetworkController.IconState;
import com.android.systemui.statusbar.policy.NetworkController.SignalCallback;

import java.io.PrintWriter;
import java.util.Objects;

public class WifiSignalController extends
@@ -225,6 +226,12 @@ public class WifiSignalController extends
        notifyListenersIfNecessary();
    }

    @Override
    public void dump(PrintWriter pw) {
        super.dump(pw);
        mWifiTracker.dump(pw);
    }

    /**
     * Handler to receive the data activity on wifi.
     */