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

Commit 33f8ae75 authored by Jason Monk's avatar Jason Monk
Browse files

Show data icon when appropriate.

Show it in the status bar when its a default network, but always show
it in QS when its connected, so that users can know its connected.

Also fix the tests.

Bug: 18776546
Change-Id: I553588fc6850b0c2ef6e6015b313222bf4c786e7
parent 99f6977d
Loading
Loading
Loading
Loading
+8 −5
Original line number Original line Diff line number Diff line
@@ -20,6 +20,8 @@ import android.net.NetworkCapabilities;


import com.android.systemui.statusbar.policy.NetworkController.IconState;
import com.android.systemui.statusbar.policy.NetworkController.IconState;


import java.util.BitSet;



public class EthernetSignalController extends
public class EthernetSignalController extends
        SignalController<SignalController.State, SignalController.IconGroup> {
        SignalController<SignalController.State, SignalController.IconGroup> {
@@ -37,6 +39,12 @@ public class EthernetSignalController extends
                AccessibilityContentDescriptions.ETHERNET_CONNECTION_VALUES[0]);
                AccessibilityContentDescriptions.ETHERNET_CONNECTION_VALUES[0]);
    }
    }


    @Override
    public void updateConnectivity(BitSet connectedTransports, BitSet validatedTransports) {
        mCurrentState.connected = connectedTransports.get(mTransportType);
        super.updateConnectivity(connectedTransports, validatedTransports);
    }

    @Override
    @Override
    public void notifyListeners() {
    public void notifyListeners() {
        boolean ethernetVisible = mCurrentState.connected;
        boolean ethernetVisible = mCurrentState.connected;
@@ -51,9 +59,4 @@ public class EthernetSignalController extends
    public SignalController.State cleanState() {
    public SignalController.State cleanState() {
        return new SignalController.State();
        return new SignalController.State();
    }
    }

    public void setConnected(boolean connected) {
        mCurrentState.connected = connected;
        notifyListenersIfNecessary();
    }
}
}
+19 −17
Original line number Original line Diff line number Diff line
@@ -36,6 +36,7 @@ import com.android.systemui.statusbar.policy.NetworkController.IconState;
import com.android.systemui.statusbar.policy.NetworkControllerImpl.Config;
import com.android.systemui.statusbar.policy.NetworkControllerImpl.Config;


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




@@ -105,13 +106,13 @@ public class MobileSignalController extends SignalController<
        notifyListenersIfNecessary();
        notifyListenersIfNecessary();
    }
    }


    public void setInetCondition(int inetCondition, int inetConditionForNetwork) {
    @Override
        // For mobile data, use general inet condition for phone signal indexing,
    public void updateConnectivity(BitSet connectedTransports, BitSet validatedTransports) {
        // and network specific for data indexing (I think this might be a bug, but
        boolean isValidated = validatedTransports.get(mTransportType);
        // keeping for now).
        mCurrentState.isDefault = connectedTransports.get(mTransportType);
        // TODO: Update with explanation of why.
        // Only show this as not having connectivity if we are default.
        mCurrentState.inetForNetwork = inetConditionForNetwork;
        mCurrentState.inetCondition = (isValidated || !mCurrentState.isDefault) ? 1 : 0;
        setInetCondition(inetCondition);
        notifyListenersIfNecessary();
    }
    }


    public void setCarrierNetworkChangeMode(boolean carrierNetworkChangeMode) {
    public void setCarrierNetworkChangeMode(boolean carrierNetworkChangeMode) {
@@ -195,9 +196,9 @@ public class MobileSignalController extends SignalController<
        String contentDescription = getStringIfExists(getContentDescription());
        String contentDescription = getStringIfExists(getContentDescription());
        String dataContentDescription = getStringIfExists(icons.mDataContentDescription);
        String dataContentDescription = getStringIfExists(icons.mDataContentDescription);


        boolean showDataIcon = mCurrentState.dataConnected && mCurrentState.inetForNetwork != 0
        // Show icon in QS when we are connected or need to show roaming.
        boolean showDataIcon = mCurrentState.dataConnected
                || mCurrentState.iconGroup == TelephonyIcons.ROAMING;
                || mCurrentState.iconGroup == TelephonyIcons.ROAMING;

        IconState statusIcon = new IconState(mCurrentState.enabled && !mCurrentState.airplaneMode,
        IconState statusIcon = new IconState(mCurrentState.enabled && !mCurrentState.airplaneMode,
                getCurrentIconId(), contentDescription);
                getCurrentIconId(), contentDescription);


@@ -206,7 +207,7 @@ public class MobileSignalController extends SignalController<
        String description = null;
        String description = null;
        // Only send data sim callbacks to QS.
        // Only send data sim callbacks to QS.
        if (mCurrentState.dataSim) {
        if (mCurrentState.dataSim) {
            qsTypeIcon = showDataIcon ? icons.mQsDataType[mCurrentState.inetForNetwork] : 0;
            qsTypeIcon = showDataIcon ? icons.mQsDataType : 0;
            qsIcon = new IconState(mCurrentState.enabled
            qsIcon = new IconState(mCurrentState.enabled
                    && !mCurrentState.isEmergency, getQsCurrentIconId(), contentDescription);
                    && !mCurrentState.isEmergency, getQsCurrentIconId(), contentDescription);
            description = mCurrentState.isEmergency ? null : mCurrentState.networkName;
            description = mCurrentState.isEmergency ? null : mCurrentState.networkName;
@@ -217,6 +218,7 @@ public class MobileSignalController extends SignalController<
        boolean activityOut = mCurrentState.dataConnected
        boolean activityOut = mCurrentState.dataConnected
                        && !mCurrentState.carrierNetworkChangeMode
                        && !mCurrentState.carrierNetworkChangeMode
                        && mCurrentState.activityOut;
                        && mCurrentState.activityOut;
        showDataIcon &= mCurrentState.isDefault;
        int typeIcon = showDataIcon ? icons.mDataType : 0;
        int typeIcon = showDataIcon ? icons.mDataType : 0;
        mCallbackHandler.setMobileDataIndicators(statusIcon, qsIcon, getCurrentDarkIconId(),
        mCallbackHandler.setMobileDataIndicators(statusIcon, qsIcon, getCurrentDarkIconId(),
                typeIcon, qsTypeIcon, activityIn, activityOut, dataContentDescription, description,
                typeIcon, qsTypeIcon, activityIn, activityOut, dataContentDescription, description,
@@ -470,12 +472,12 @@ public class MobileSignalController extends SignalController<
        final int mDataContentDescription; // mContentDescriptionDataType
        final int mDataContentDescription; // mContentDescriptionDataType
        final int mDataType;
        final int mDataType;
        final boolean mIsWide;
        final boolean mIsWide;
        final int[] mQsDataType;
        final int mQsDataType;


        public MobileIconGroup(String name, int[][] sbIcons, int[][] qsIcons, int[] contentDesc,
        public MobileIconGroup(String name, int[][] sbIcons, int[][] qsIcons, int[] contentDesc,
                int sbNullState, int qsNullState, int sbDiscState, int qsDiscState,
                int sbNullState, int qsNullState, int sbDiscState, int qsDiscState,
                int discContentDesc, int dataContentDesc, int dataType, boolean isWide,
                int discContentDesc, int dataContentDesc, int dataType, boolean isWide,
                int[] qsDataType) {
                int qsDataType) {
            this(name, sbIcons, sbIcons, qsIcons, contentDesc, sbNullState, qsNullState,
            this(name, sbIcons, sbIcons, qsIcons, contentDesc, sbNullState, qsNullState,
                    sbDiscState, sbDiscState, qsDiscState, discContentDesc, dataContentDesc,
                    sbDiscState, sbDiscState, qsDiscState, discContentDesc, dataContentDesc,
                    dataType, isWide, qsDataType);
                    dataType, isWide, qsDataType);
@@ -484,7 +486,7 @@ public class MobileSignalController extends SignalController<
        public MobileIconGroup(String name, int[][] sbIcons, int[][] sbDarkIcons, int[][] qsIcons,
        public MobileIconGroup(String name, int[][] sbIcons, int[][] sbDarkIcons, int[][] qsIcons,
                int[] contentDesc, int sbNullState, int qsNullState, int sbDiscState,
                int[] contentDesc, int sbNullState, int qsNullState, int sbDiscState,
                int sbDarkDiscState, int qsDiscState, int discContentDesc, int dataContentDesc,
                int sbDarkDiscState, int qsDiscState, int discContentDesc, int dataContentDesc,
                int dataType, boolean isWide, int[] qsDataType) {
                int dataType, boolean isWide, int qsDataType) {
            super(name, sbIcons, sbDarkIcons, qsIcons, contentDesc, sbNullState, qsNullState,
            super(name, sbIcons, sbDarkIcons, qsIcons, contentDesc, sbNullState, qsNullState,
                    sbDiscState, sbDarkDiscState, qsDiscState, discContentDesc);
                    sbDiscState, sbDarkDiscState, qsDiscState, discContentDesc);
            mDataContentDescription = dataContentDesc;
            mDataContentDescription = dataContentDesc;
@@ -502,7 +504,7 @@ public class MobileSignalController extends SignalController<
        boolean isEmergency;
        boolean isEmergency;
        boolean airplaneMode;
        boolean airplaneMode;
        boolean carrierNetworkChangeMode;
        boolean carrierNetworkChangeMode;
        int inetForNetwork;
        boolean isDefault;


        @Override
        @Override
        public void copyFrom(State s) {
        public void copyFrom(State s) {
@@ -512,7 +514,7 @@ public class MobileSignalController extends SignalController<
            networkName = state.networkName;
            networkName = state.networkName;
            networkNameData = state.networkNameData;
            networkNameData = state.networkNameData;
            dataConnected = state.dataConnected;
            dataConnected = state.dataConnected;
            inetForNetwork = state.inetForNetwork;
            isDefault = state.isDefault;
            isEmergency = state.isEmergency;
            isEmergency = state.isEmergency;
            airplaneMode = state.airplaneMode;
            airplaneMode = state.airplaneMode;
            carrierNetworkChangeMode = state.carrierNetworkChangeMode;
            carrierNetworkChangeMode = state.carrierNetworkChangeMode;
@@ -526,7 +528,7 @@ public class MobileSignalController extends SignalController<
            builder.append("networkName=").append(networkName).append(',');
            builder.append("networkName=").append(networkName).append(',');
            builder.append("networkNameData=").append(networkNameData).append(',');
            builder.append("networkNameData=").append(networkNameData).append(',');
            builder.append("dataConnected=").append(dataConnected).append(',');
            builder.append("dataConnected=").append(dataConnected).append(',');
            builder.append("inetForNetwork=").append(inetForNetwork).append(',');
            builder.append("isDefault=").append(isDefault).append(',');
            builder.append("isEmergency=").append(isEmergency).append(',');
            builder.append("isEmergency=").append(isEmergency).append(',');
            builder.append("airplaneMode=").append(airplaneMode).append(',');
            builder.append("airplaneMode=").append(airplaneMode).append(',');
            builder.append("carrierNetworkChangeMode=").append(carrierNetworkChangeMode);
            builder.append("carrierNetworkChangeMode=").append(carrierNetworkChangeMode);
@@ -542,7 +544,7 @@ public class MobileSignalController extends SignalController<
                    && ((MobileState) o).isEmergency == isEmergency
                    && ((MobileState) o).isEmergency == isEmergency
                    && ((MobileState) o).airplaneMode == airplaneMode
                    && ((MobileState) o).airplaneMode == airplaneMode
                    && ((MobileState) o).carrierNetworkChangeMode == carrierNetworkChangeMode
                    && ((MobileState) o).carrierNetworkChangeMode == carrierNetworkChangeMode
                    && ((MobileState) o).inetForNetwork == inetForNetwork;
                    && ((MobileState) o).isDefault == isDefault;
        }
        }
    }
    }
}
}
+16 −15
Original line number Original line Diff line number Diff line
@@ -538,17 +538,10 @@ public class NetworkControllerImpl extends BroadcastReceiver
    private void pushConnectivityToSignals() {
    private void pushConnectivityToSignals() {
        // We want to update all the icons, all at once, for any condition change
        // We want to update all the icons, all at once, for any condition change
        for (MobileSignalController mobileSignalController : mMobileSignalControllers.values()) {
        for (MobileSignalController mobileSignalController : mMobileSignalControllers.values()) {
            mobileSignalController.setInetCondition(
            mobileSignalController.updateConnectivity(mConnectedTransports, mValidatedTransports);
                    mInetCondition ? 1 : 0,
                    mValidatedTransports.get(mobileSignalController.getTransportType()) ? 1 : 0);
        }
        }
        mWifiSignalController.setInetCondition(
        mWifiSignalController.updateConnectivity(mConnectedTransports, mValidatedTransports);
                mValidatedTransports.get(mWifiSignalController.getTransportType()) ? 1 : 0);
        mEthernetSignalController.updateConnectivity(mConnectedTransports, mValidatedTransports);

        mEthernetSignalController.setConnected(
                mConnectedTransports.get(mEthernetSignalController.getTransportType()));
        mEthernetSignalController.setInetCondition(
                mValidatedTransports.get(mEthernetSignalController.getTransportType()) ? 1 : 0);
    }
    }


    public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
    public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
@@ -581,7 +574,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
    }
    }


    private boolean mDemoMode;
    private boolean mDemoMode;
    private int mDemoInetCondition;
    private boolean mDemoInetCondition;
    private WifiSignalController.WifiState mDemoWifiState;
    private WifiSignalController.WifiState mDemoWifiState;


    @Override
    @Override
@@ -590,7 +583,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
            if (DEBUG) Log.d(TAG, "Entering demo mode");
            if (DEBUG) Log.d(TAG, "Entering demo mode");
            unregisterListeners();
            unregisterListeners();
            mDemoMode = true;
            mDemoMode = true;
            mDemoInetCondition = mInetCondition ? 1 : 0;
            mDemoInetCondition = mInetCondition;
            mDemoWifiState = mWifiSignalController.getState();
            mDemoWifiState = mWifiSignalController.getState();
        } else if (mDemoMode && command.equals(COMMAND_EXIT)) {
        } else if (mDemoMode && command.equals(COMMAND_EXIT)) {
            if (DEBUG) Log.d(TAG, "Exiting demo mode");
            if (DEBUG) Log.d(TAG, "Exiting demo mode");
@@ -614,10 +607,18 @@ public class NetworkControllerImpl extends BroadcastReceiver
            }
            }
            String fully = args.getString("fully");
            String fully = args.getString("fully");
            if (fully != null) {
            if (fully != null) {
                mDemoInetCondition = Boolean.parseBoolean(fully) ? 1 : 0;
                mDemoInetCondition = Boolean.parseBoolean(fully);
                mWifiSignalController.setInetCondition(mDemoInetCondition);
                BitSet connected = new BitSet();

                if (mDemoInetCondition) {
                    connected.set(mWifiSignalController.mTransportType);
                }
                mWifiSignalController.updateConnectivity(connected, connected);
                for (MobileSignalController controller : mMobileSignalControllers.values()) {
                for (MobileSignalController controller : mMobileSignalControllers.values()) {
                    controller.setInetCondition(mDemoInetCondition, mDemoInetCondition);
                    if (mDemoInetCondition) {
                        connected.set(controller.mTransportType);
                    }
                    controller.updateConnectivity(connected, connected);
                }
                }
            }
            }
            String wifi = args.getString("wifi");
            String wifi = args.getString("wifi");
+3 −6
Original line number Original line Diff line number Diff line
@@ -22,6 +22,7 @@ import android.text.format.DateFormat;
import android.util.Log;
import android.util.Log;


import java.io.PrintWriter;
import java.io.PrintWriter;
import java.util.BitSet;




/**
/**
@@ -75,12 +76,8 @@ public abstract class SignalController<T extends SignalController.State,
        return mCurrentState;
        return mCurrentState;
    }
    }


    public int getTransportType() {
    public void updateConnectivity(BitSet connectedTransports, BitSet validatedTransports) {
        return mTransportType;
        mCurrentState.inetCondition = validatedTransports.get(mTransportType) ? 1 : 0;
    }

    public void setInetCondition(int inetCondition) {
        mCurrentState.inetCondition = inetCondition;
        notifyListenersIfNecessary();
        notifyListenersIfNecessary();
    }
    }


+10 −34
Original line number Original line Diff line number Diff line
@@ -104,10 +104,7 @@ class TelephonyIcons {
          R.drawable.ic_qs_signal_carrier_network_change_animation }
          R.drawable.ic_qs_signal_carrier_network_change_animation }
    };
    };


    static final int[] QS_DATA_R = {
    static final int QS_DATA_R = R.drawable.ic_qs_signal_r;
        R.drawable.ic_qs_signal_r,
        R.drawable.ic_qs_signal_r
    };


    //***** Data connection icons
    //***** Data connection icons


@@ -123,10 +120,7 @@ class TelephonyIcons {
              R.drawable.stat_sys_data_fully_connected_g }
              R.drawable.stat_sys_data_fully_connected_g }
        };
        };


    static final int[] QS_DATA_G = {
    static final int QS_DATA_G = R.drawable.ic_qs_signal_g;
        R.drawable.ic_qs_signal_g,
        R.drawable.ic_qs_signal_g
    };


    static final int[][] DATA_3G = {
    static final int[][] DATA_3G = {
            { R.drawable.stat_sys_data_fully_connected_3g,
            { R.drawable.stat_sys_data_fully_connected_3g,
@@ -139,10 +133,7 @@ class TelephonyIcons {
              R.drawable.stat_sys_data_fully_connected_3g }
              R.drawable.stat_sys_data_fully_connected_3g }
        };
        };


    static final int[] QS_DATA_3G = {
    static final int QS_DATA_3G = R.drawable.ic_qs_signal_3g;
        R.drawable.ic_qs_signal_3g,
        R.drawable.ic_qs_signal_3g
    };


    static final int[][] DATA_E = {
    static final int[][] DATA_E = {
            { R.drawable.stat_sys_data_fully_connected_e,
            { R.drawable.stat_sys_data_fully_connected_e,
@@ -155,10 +146,7 @@ class TelephonyIcons {
              R.drawable.stat_sys_data_fully_connected_e }
              R.drawable.stat_sys_data_fully_connected_e }
        };
        };


    static final int[] QS_DATA_E = {
    static final int QS_DATA_E = R.drawable.ic_qs_signal_e;
        R.drawable.ic_qs_signal_e,
        R.drawable.ic_qs_signal_e
    };


    //3.5G
    //3.5G
    static final int[][] DATA_H = {
    static final int[][] DATA_H = {
@@ -172,10 +160,7 @@ class TelephonyIcons {
              R.drawable.stat_sys_data_fully_connected_h }
              R.drawable.stat_sys_data_fully_connected_h }
    };
    };


    static final int[] QS_DATA_H = {
    static final int QS_DATA_H = R.drawable.ic_qs_signal_h;
                R.drawable.ic_qs_signal_h,
                R.drawable.ic_qs_signal_h
    };


    //CDMA
    //CDMA
    // Use 3G icons for EVDO data and 1x icons for 1XRTT data
    // Use 3G icons for EVDO data and 1x icons for 1XRTT data
@@ -190,10 +175,7 @@ class TelephonyIcons {
              R.drawable.stat_sys_data_fully_connected_1x }
              R.drawable.stat_sys_data_fully_connected_1x }
            };
            };


    static final int[] QS_DATA_1X = {
    static final int QS_DATA_1X = R.drawable.ic_qs_signal_1x;
        R.drawable.ic_qs_signal_1x,
        R.drawable.ic_qs_signal_1x
    };


    // LTE and eHRPD
    // LTE and eHRPD
    static final int[][] DATA_4G = {
    static final int[][] DATA_4G = {
@@ -207,10 +189,7 @@ class TelephonyIcons {
              R.drawable.stat_sys_data_fully_connected_4g }
              R.drawable.stat_sys_data_fully_connected_4g }
        };
        };


    static final int[] QS_DATA_4G = {
    static final int QS_DATA_4G = R.drawable.ic_qs_signal_4g;
        R.drawable.ic_qs_signal_4g,
        R.drawable.ic_qs_signal_4g
    };


    // LTE branded "LTE"
    // LTE branded "LTE"
    static final int[][] DATA_LTE = {
    static final int[][] DATA_LTE = {
@@ -224,10 +203,7 @@ class TelephonyIcons {
                    R.drawable.stat_sys_data_fully_connected_lte }
                    R.drawable.stat_sys_data_fully_connected_lte }
    };
    };


    static final int[] QS_DATA_LTE = {
    static final int QS_DATA_LTE = R.drawable.ic_qs_signal_lte;
        R.drawable.ic_qs_signal_lte,
        R.drawable.ic_qs_signal_lte
    };


    static final int FLIGHT_MODE_ICON = R.drawable.stat_sys_airplane_mode;
    static final int FLIGHT_MODE_ICON = R.drawable.stat_sys_airplane_mode;
    static final int ROAMING_ICON = R.drawable.stat_sys_data_fully_connected_roam;
    static final int ROAMING_ICON = R.drawable.stat_sys_data_fully_connected_roam;
@@ -264,7 +240,7 @@ class TelephonyIcons {
            R.string.accessibility_carrier_network_change_mode,
            R.string.accessibility_carrier_network_change_mode,
            0,
            0,
            false,
            false,
            null
            0
            );
            );


    static final MobileIconGroup THREE_G = new MobileIconGroup(
    static final MobileIconGroup THREE_G = new MobileIconGroup(
@@ -291,7 +267,7 @@ class TelephonyIcons {
            TelephonyIcons.TELEPHONY_NO_NETWORK,
            TelephonyIcons.TELEPHONY_NO_NETWORK,
            TelephonyIcons.QS_TELEPHONY_NO_NETWORK,
            TelephonyIcons.QS_TELEPHONY_NO_NETWORK,
            AccessibilityContentDescriptions.PHONE_SIGNAL_STRENGTH[0],
            AccessibilityContentDescriptions.PHONE_SIGNAL_STRENGTH[0],
            0, 0, false, new int[2]
            0, 0, false, 0
            );
            );


    static final MobileIconGroup E = new MobileIconGroup(
    static final MobileIconGroup E = new MobileIconGroup(
Loading