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

Commit 974c1c7c authored by Etan Cohen's avatar Etan Cohen Committed by Automerger Merge Worker
Browse files

Merge "[WIFI][SYSUI] Display Wi-Fi icon in status bar if it is the default...

Merge "[WIFI][SYSUI] Display Wi-Fi icon in status bar if it is the default network" into rvc-dev am: 79754e75 am: 2a431dbb am: 7f8c2ae7

Change-Id: Id03e356e79f6cb34759c2d3f0262af3e0d0d67b8
parents f80adc8b 7f8c2ae7
Loading
Loading
Loading
Loading
+45 −5
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.ConnectivityManager.NetworkCallback;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkInfo;
@@ -36,7 +37,10 @@ import com.android.settingslib.R;

import java.util.List;

public class WifiStatusTracker extends ConnectivityManager.NetworkCallback {
/**
 * Track status of Wi-Fi for the Sys UI.
 */
public class WifiStatusTracker {
    private final Context mContext;
    private final WifiNetworkScoreCache mWifiNetworkScoreCache;
    private final WifiManager mWifiManager;
@@ -55,8 +59,9 @@ public class WifiStatusTracker extends ConnectivityManager.NetworkCallback {
            .clearCapabilities()
            .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)
            .addTransportType(NetworkCapabilities.TRANSPORT_WIFI).build();
    private final ConnectivityManager.NetworkCallback mNetworkCallback = new ConnectivityManager
            .NetworkCallback() {
    private final NetworkCallback mNetworkCallback = new NetworkCallback() {
        // Note: onCapabilitiesChanged is guaranteed to be called "immediately" after onAvailable
        // and onLinkPropertiesChanged.
        @Override
        public void onCapabilitiesChanged(
                Network network, NetworkCapabilities networkCapabilities) {
@@ -64,11 +69,35 @@ public class WifiStatusTracker extends ConnectivityManager.NetworkCallback {
            mCallback.run();
        }
    };
    private final NetworkCallback mDefaultNetworkCallback = new NetworkCallback() {
                @Override
                public void onCapabilitiesChanged(Network network, NetworkCapabilities nc) {
                    // network is now the default network, and its capabilities are nc.
                    // This method will always be called immediately after the network becomes the
                    // default, in addition to any time the capabilities change while the network is
                    // the default.
                    mDefaultNetwork = network;
                    mDefaultNetworkCapabilities = nc;
                    updateStatusLabel();
                    mCallback.run();
                }
                @Override
                public void onLost(Network network) {
                    // The system no longer has a default network.
                    mDefaultNetwork = null;
                    mDefaultNetworkCapabilities = null;
                    updateStatusLabel();
                    mCallback.run();
                }
            };
    private Network mDefaultNetwork = null;
    private NetworkCapabilities mDefaultNetworkCapabilities = null;
    private final Runnable mCallback;

    private WifiInfo mWifiInfo;
    public boolean enabled;
    public boolean isCaptivePortal;
    public boolean isDefaultNetwork;
    public int state;
    public boolean connected;
    public String ssid;
@@ -94,11 +123,13 @@ public class WifiStatusTracker extends ConnectivityManager.NetworkCallback {
            mWifiNetworkScoreCache.registerListener(mCacheListener);
            mConnectivityManager.registerNetworkCallback(
                    mNetworkRequest, mNetworkCallback, mHandler);
            mConnectivityManager.registerDefaultNetworkCallback(mDefaultNetworkCallback, mHandler);
        } else {
            mNetworkScoreManager.unregisterNetworkScoreCache(NetworkKey.TYPE_WIFI,
                    mWifiNetworkScoreCache);
            mWifiNetworkScoreCache.unregisterListener();
            mConnectivityManager.unregisterNetworkCallback(mNetworkCallback);
            mConnectivityManager.unregisterNetworkCallback(mDefaultNetworkCallback);
        }
    }

@@ -154,8 +185,17 @@ public class WifiStatusTracker extends ConnectivityManager.NetworkCallback {
    }

    private void updateStatusLabel() {
        final NetworkCapabilities networkCapabilities
                = mConnectivityManager.getNetworkCapabilities(mWifiManager.getCurrentNetwork());
        NetworkCapabilities networkCapabilities;
        final Network currentWifiNetwork = mWifiManager.getCurrentNetwork();
        if (currentWifiNetwork != null && currentWifiNetwork.equals(mDefaultNetwork)) {
            // Wifi is connected and the default network.
            isDefaultNetwork = true;
            networkCapabilities = mDefaultNetworkCapabilities;
        } else {
            isDefaultNetwork = false;
            networkCapabilities = mConnectivityManager.getNetworkCapabilities(
                    mWifiManager.getCurrentNetwork());
        }
        isCaptivePortal = false;
        if (networkCapabilities != null) {
            if (networkCapabilities.hasCapability(NET_CAPABILITY_CAPTIVE_PORTAL)) {
+7 −6
Original line number Diff line number Diff line
@@ -37,10 +37,10 @@ import java.util.Objects;

public class WifiSignalController extends
        SignalController<WifiSignalController.WifiState, SignalController.IconGroup> {
    private final boolean mHasMobileData;
    private final boolean mHasMobileDataFeature;
    private final WifiStatusTracker mWifiTracker;

    public WifiSignalController(Context context, boolean hasMobileData,
    public WifiSignalController(Context context, boolean hasMobileDataFeature,
            CallbackHandler callbackHandler, NetworkControllerImpl networkController,
            WifiManager wifiManager) {
        super("WifiSignalController", context, NetworkCapabilities.TRANSPORT_WIFI,
@@ -52,7 +52,7 @@ public class WifiSignalController extends
        mWifiTracker = new WifiStatusTracker(mContext, wifiManager, networkScoreManager,
                connectivityManager, this::handleStatusUpdated);
        mWifiTracker.setListening(true);
        mHasMobileData = hasMobileData;
        mHasMobileDataFeature = hasMobileDataFeature;
        if (wifiManager != null) {
            wifiManager.registerTrafficStateCallback(context.getMainExecutor(),
                    new WifiTrafficStateCallback());
@@ -85,9 +85,10 @@ public class WifiSignalController extends
        // only show wifi in the cluster if connected or if wifi-only
        boolean visibleWhenEnabled = mContext.getResources().getBoolean(
                R.bool.config_showWifiIndicatorWhenEnabled);
        boolean wifiVisible = mCurrentState.enabled
                && ((mCurrentState.connected && mCurrentState.inetCondition == 1)
                    || !mHasMobileData || visibleWhenEnabled);
        boolean wifiVisible = mCurrentState.enabled && (
                (mCurrentState.connected && mCurrentState.inetCondition == 1)
                        || !mHasMobileDataFeature || mWifiTracker.isDefaultNetwork
                        || visibleWhenEnabled);
        String wifiDesc = mCurrentState.connected ? mCurrentState.ssid : null;
        boolean ssidPresent = wifiVisible && mCurrentState.ssid != null;
        String contentDescription = getTextIfExists(getContentDescription()).toString();