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

Commit 8b6556fd authored by Ying Xu's avatar Ying Xu Committed by Automerger Merge Worker
Browse files

Merge "Show the Ethernet Icon in the InternetTile" into sc-dev am: 4b974495

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/13436012

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I278e5403ca9ff95744694444522c5da87aee78ca
parents 3ecfdd4b 4b974495
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -1484,5 +1484,5 @@
    <!-- Content description of the Ethernet connection when disconnected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
    <!-- Content description of the Ethernet connection when disconnected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
    <string name="accessibility_ethernet_disconnected">Ethernet disconnected.</string>
    <string name="accessibility_ethernet_disconnected">Ethernet disconnected.</string>
    <!-- Content description of the Ethernet connection when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
    <!-- Content description of the Ethernet connection when connected for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
    <string name="accessibility_ethernet_connected">Ethernet connected.</string>
    <string name="accessibility_ethernet_connected">Ethernet.</string>
</resources>
</resources>
+79 −10
Original line number Original line Diff line number Diff line
@@ -54,6 +54,9 @@ import com.android.systemui.statusbar.policy.NetworkController.IconState;
import com.android.systemui.statusbar.policy.NetworkController.SignalCallback;
import com.android.systemui.statusbar.policy.NetworkController.SignalCallback;
import com.android.systemui.statusbar.policy.WifiIcons;
import com.android.systemui.statusbar.policy.WifiIcons;


import java.io.FileDescriptor;
import java.io.PrintWriter;

import javax.inject.Inject;
import javax.inject.Inject;


/** Quick settings tile: Internet **/
/** Quick settings tile: Internet **/
@@ -65,7 +68,7 @@ public class InternetTile extends QSTileImpl<SignalState> {
    protected final NetworkController mController;
    protected final NetworkController mController;
    private final DataUsageController mDataController;
    private final DataUsageController mDataController;
    private final QSTile.SignalState mStateBeforeClick = newTileState();
    private final QSTile.SignalState mStateBeforeClick = newTileState();
    // The last updated tile state, 0: mobile, 1: wifi
    // The last updated tile state, 0: mobile, 1: wifi, 2: ethernet.
    private int mLastTileState = -1;
    private int mLastTileState = -1;


    protected final InternetSignalCallback mSignalCallback = new InternetSignalCallback();
    protected final InternetSignalCallback mSignalCallback = new InternetSignalCallback();
@@ -140,6 +143,21 @@ public class InternetTile extends QSTileImpl<SignalState> {
        return string;
        return string;
    }
    }


    private static final class EthernetCallbackInfo {
        boolean mConnected;
        int mEthernetSignalIconId;
        String mEthernetContentDescription;

        @Override
        public String toString() {
            return new StringBuilder("EthernetCallbackInfo[")
                    .append("mConnected=").append(mConnected)
                    .append(",mEthernetSignalIconId=").append(mEthernetSignalIconId)
                    .append(",mEthernetContentDescription=").append(mEthernetContentDescription)
                    .append(']').toString();
        }
    }

    private static final class WifiCallbackInfo {
    private static final class WifiCallbackInfo {
        boolean mAirplaneModeEnabled;
        boolean mAirplaneModeEnabled;
        boolean mEnabled;
        boolean mEnabled;
@@ -212,6 +230,8 @@ public class InternetTile extends QSTileImpl<SignalState> {
    protected final class InternetSignalCallback implements SignalCallback {
    protected final class InternetSignalCallback implements SignalCallback {
        final WifiCallbackInfo mWifiInfo = new WifiCallbackInfo();
        final WifiCallbackInfo mWifiInfo = new WifiCallbackInfo();
        final CellularCallbackInfo mCellularInfo = new CellularCallbackInfo();
        final CellularCallbackInfo mCellularInfo = new CellularCallbackInfo();
        final EthernetCallbackInfo mEthernetInfo = new EthernetCallbackInfo();



        @Override
        @Override
        public void setWifiIndicators(boolean enabled, IconState statusIcon, IconState qsIcon,
        public void setWifiIndicators(boolean enabled, IconState statusIcon, IconState qsIcon,
@@ -230,14 +250,12 @@ public class InternetTile extends QSTileImpl<SignalState> {
            }
            }
            // When airplane mode is enabled, we need to refresh the Internet Tile even if the WiFi
            // When airplane mode is enabled, we need to refresh the Internet Tile even if the WiFi
            // is not the default network.
            // is not the default network.
            if (qsIcon == null && !mWifiInfo.mAirplaneModeEnabled) {
            if (qsIcon == null) {
                return;
                return;
            }
            }
            if (qsIcon != null) {
            mWifiInfo.mConnected = qsIcon.visible;
            mWifiInfo.mConnected = qsIcon.visible;
            mWifiInfo.mWifiSignalIconId = qsIcon.icon;
            mWifiInfo.mWifiSignalIconId = qsIcon.icon;
            mWifiInfo.mWifiSignalContentDescription = qsIcon.contentDescription;
            mWifiInfo.mWifiSignalContentDescription = qsIcon.contentDescription;
            }
            mWifiInfo.mEnabled = enabled;
            mWifiInfo.mEnabled = enabled;
            mWifiInfo.mSsid = description;
            mWifiInfo.mSsid = description;
            mWifiInfo.mActivityIn = activityIn;
            mWifiInfo.mActivityIn = activityIn;
@@ -286,6 +304,20 @@ public class InternetTile extends QSTileImpl<SignalState> {
            refreshState(mCellularInfo);
            refreshState(mCellularInfo);
        }
        }


        @Override
        public void setEthernetIndicators(IconState icon) {
            if (DEBUG) {
                Log.d(TAG, "setEthernetIndicators: "
                        + "icon = " + (icon == null ? "" :  icon.toString()));
            }
            mEthernetInfo.mConnected = icon.visible;
            mEthernetInfo.mEthernetSignalIconId = icon.icon;
            mEthernetInfo.mEthernetContentDescription = icon.contentDescription;
            if (icon.visible) {
                refreshState(mEthernetInfo);
            }
        }

        @Override
        @Override
        public void setNoSims(boolean show, boolean simDetected) {
        public void setNoSims(boolean show, boolean simDetected) {
            if (DEBUG) {
            if (DEBUG) {
@@ -299,7 +331,6 @@ public class InternetTile extends QSTileImpl<SignalState> {
                mCellularInfo.mMobileSignalIconId = 0;
                mCellularInfo.mMobileSignalIconId = 0;
                mCellularInfo.mQsTypeIcon = 0;
                mCellularInfo.mQsTypeIcon = 0;
            }
            }
            refreshState(mCellularInfo);
        }
        }


        @Override
        @Override
@@ -310,8 +341,10 @@ public class InternetTile extends QSTileImpl<SignalState> {
            }
            }
            mCellularInfo.mAirplaneModeEnabled = icon.visible;
            mCellularInfo.mAirplaneModeEnabled = icon.visible;
            mWifiInfo.mAirplaneModeEnabled = icon.visible;
            mWifiInfo.mAirplaneModeEnabled = icon.visible;
            if (!mSignalCallback.mEthernetInfo.mConnected) {
                refreshState(mCellularInfo);
                refreshState(mCellularInfo);
            }
            }
        }


        @Override
        @Override
        public void setConnectivityStatus(boolean noDefaultNetwork, boolean noValidatedNetwork,
        public void setConnectivityStatus(boolean noDefaultNetwork, boolean noValidatedNetwork,
@@ -330,6 +363,15 @@ public class InternetTile extends QSTileImpl<SignalState> {
            mWifiInfo.mNoNetworksAvailable = noNetworksAvailable;
            mWifiInfo.mNoNetworksAvailable = noNetworksAvailable;
            refreshState(mWifiInfo);
            refreshState(mWifiInfo);
        }
        }

        @Override
        public String toString() {
            return new StringBuilder("InternetSignalCallback[")
                .append("mWifiInfo=").append(mWifiInfo)
                .append(",mCellularInfo=").append(mCellularInfo)
                .append(",mEthernetInfo=").append(mEthernetInfo)
                .append(']').toString();
        }
    }
    }


    @Override
    @Override
@@ -340,6 +382,9 @@ public class InternetTile extends QSTileImpl<SignalState> {
        } else if (arg instanceof WifiCallbackInfo) {
        } else if (arg instanceof WifiCallbackInfo) {
            mLastTileState = 1;
            mLastTileState = 1;
            handleUpdateWifiState(state, arg);
            handleUpdateWifiState(state, arg);
        } else if (arg instanceof EthernetCallbackInfo) {
            mLastTileState = 2;
            handleUpdateEthernetState(state, arg);
        } else {
        } else {
            // handleUpdateState will be triggered when user expands the QuickSetting panel with
            // handleUpdateState will be triggered when user expands the QuickSetting panel with
            // arg = null, in this case the last updated CellularCallbackInfo or WifiCallbackInfo
            // arg = null, in this case the last updated CellularCallbackInfo or WifiCallbackInfo
@@ -348,6 +393,8 @@ public class InternetTile extends QSTileImpl<SignalState> {
                handleUpdateCellularState(state, mSignalCallback.mCellularInfo);
                handleUpdateCellularState(state, mSignalCallback.mCellularInfo);
            } else if (mLastTileState == 1) {
            } else if (mLastTileState == 1) {
                handleUpdateWifiState(state, mSignalCallback.mWifiInfo);
                handleUpdateWifiState(state, mSignalCallback.mWifiInfo);
            } else if (mLastTileState == 2) {
                handleUpdateEthernetState(state, mSignalCallback.mEthernetInfo);
            }
            }
        }
        }
    }
    }
@@ -440,7 +487,6 @@ public class InternetTile extends QSTileImpl<SignalState> {
            Log.d(TAG, "handleUpdateCellularState: " + "CellularCallbackInfo = " + cb.toString());
            Log.d(TAG, "handleUpdateCellularState: " + "CellularCallbackInfo = " + cb.toString());
        }
        }
        final Resources r = mContext.getResources();
        final Resources r = mContext.getResources();
        // TODO(b/174753536): Use the new "Internet" string as state.label once available.
        state.label = r.getString(R.string.quick_settings_internet_label);
        state.label = r.getString(R.string.quick_settings_internet_label);
        state.state = Tile.STATE_ACTIVE;
        state.state = Tile.STATE_ACTIVE;
        boolean mobileDataEnabled = mDataController.isMobileDataSupported()
        boolean mobileDataEnabled = mDataController.isMobileDataSupported()
@@ -478,6 +524,18 @@ public class InternetTile extends QSTileImpl<SignalState> {
        }
        }
    }
    }


    private void handleUpdateEthernetState(SignalState state, Object arg) {
        EthernetCallbackInfo cb = (EthernetCallbackInfo) arg;
        if (DEBUG) {
            Log.d(TAG, "handleUpdateEthernetState: " + "EthernetCallbackInfo = " + cb.toString());
        }
        final Resources r = mContext.getResources();
        state.label = r.getString(R.string.quick_settings_internet_label);
        state.state = Tile.STATE_ACTIVE;
        state.icon = ResourceIcon.get(cb.mEthernetSignalIconId);
        state.secondaryLabel = cb.mEthernetContentDescription;
    }

    private CharSequence appendMobileDataType(CharSequence current, CharSequence dataType) {
    private CharSequence appendMobileDataType(CharSequence current, CharSequence dataType) {
        if (TextUtils.isEmpty(dataType)) {
        if (TextUtils.isEmpty(dataType)) {
            return Html.fromHtml((current == null ? "" : current.toString()), 0);
            return Html.fromHtml((current == null ? "" : current.toString()), 0);
@@ -519,4 +577,15 @@ public class InternetTile extends QSTileImpl<SignalState> {
            return d;
            return d;
        }
        }
    }
    }

    /**
     * Dumps the state of this tile along with its name.
     */
    @Override
    public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
        pw.println(this.getClass().getSimpleName() + ":");
        pw.print("    "); pw.println(getState().toString());
        pw.print("    "); pw.println("mLastTileState=" + mLastTileState);
        pw.print("    "); pw.println("mSignalCallback=" + mSignalCallback.toString());
    }
}
}
+9 −1
Original line number Original line Diff line number Diff line
@@ -53,12 +53,20 @@ public class EthernetSignalController extends
    public void notifyListeners(SignalCallback callback) {
    public void notifyListeners(SignalCallback callback) {
        boolean ethernetVisible = mCurrentState.connected;
        boolean ethernetVisible = mCurrentState.connected;
        String contentDescription = getTextIfExists(getContentDescription()).toString();
        String contentDescription = getTextIfExists(getContentDescription()).toString();

        // TODO: wire up data transfer using WifiSignalPoller.
        // TODO: wire up data transfer using WifiSignalPoller.
        callback.setEthernetIndicators(new IconState(ethernetVisible, getCurrentIconId(),
        callback.setEthernetIndicators(new IconState(ethernetVisible, getCurrentIconId(),
                contentDescription));
                contentDescription));
    }
    }


    @Override
    public int getContentDescription() {
        if (mCurrentState.connected) {
            return getIcons().contentDesc[1];
        } else {
            return getIcons().discContentDesc;
        }
    }

    @Override
    @Override
    public State cleanState() {
    public State cleanState() {
        return new State();
        return new State();
+4 −0
Original line number Original line Diff line number Diff line
@@ -524,6 +524,10 @@ public class NetworkControllerImpl extends BroadcastReceiver
        return mWifiSignalController.isCarrierMergedWifi(subId);
        return mWifiSignalController.isCarrierMergedWifi(subId);
    }
    }


    boolean isEthernetDefault() {
        return mConnectedTransports.get(NetworkCapabilities.TRANSPORT_ETHERNET);
    }

    String getNonDefaultMobileDataNetworkName(int subId) {
    String getNonDefaultMobileDataNetworkName(int subId) {
        MobileSignalController controller = getControllerWithSubId(subId);
        MobileSignalController controller = getControllerWithSubId(subId);
        return controller != null ? controller.getNonDefaultCarrierName() : "";
        return controller != null ? controller.getNonDefaultCarrierName() : "";
+2 −1
Original line number Original line Diff line number Diff line
@@ -106,7 +106,8 @@ public class WifiSignalController extends
        IconState statusIcon = new IconState(wifiVisible, getCurrentIconId(), contentDescription);
        IconState statusIcon = new IconState(wifiVisible, getCurrentIconId(), contentDescription);
        if (mProviderModel) {
        if (mProviderModel) {
            IconState qsIcon = null;
            IconState qsIcon = null;
            if (mCurrentState.isDefault) {
            if (mCurrentState.isDefault || (!mNetworkController.isRadioOn()
                    && !mNetworkController.isEthernetDefault())) {
                qsIcon = new IconState(mCurrentState.connected,
                qsIcon = new IconState(mCurrentState.connected,
                        mWifiTracker.isCaptivePortal ? R.drawable.ic_qs_wifi_disconnected
                        mWifiTracker.isCaptivePortal ? R.drawable.ic_qs_wifi_disconnected
                                : getQsCurrentIconId(), contentDescription);
                                : getQsCurrentIconId(), contentDescription);