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

Commit aaf2ae3c authored by Evan Laird's avatar Evan Laird Committed by Android (Google) Code Review
Browse files

Merge changes from topic "sysui-networking-refactor" into sc-v2-dev

* changes:
  Remove instance fields from MobileSignalController
  Re-internalize MobileState and State from SettingsLib
  Move interfaces out of NetworkController
parents 38d4f8e7 b8f0bd20
Loading
Loading
Loading
Loading
+1 −198
Original line number Diff line number Diff line
@@ -15,13 +15,8 @@
 */
package com.android.settingslib;

import com.android.settingslib.mobile.TelephonyIcons;

import java.text.SimpleDateFormat;
import java.util.Objects;

/**
 * Icons and states for SysUI and Settings.
 * Icons for SysUI and Settings.
 */
public class SignalIcon {

@@ -70,92 +65,6 @@ public class SignalIcon {
        }
    }

    /**
     * Holds states for SysUI.
     */
    public static class State {
        // No locale as it's only used for logging purposes
        private static SimpleDateFormat sSDF = new SimpleDateFormat("MM-dd HH:mm:ss.SSS");
        public boolean connected;
        public boolean enabled;
        public boolean activityIn;
        public boolean activityOut;
        public int level;
        public IconGroup iconGroup;
        public int inetCondition;
        public int rssi; // Only for logging.

        // Not used for comparison, just used for logging.
        public long time;

        /**
         * Generates a copy of the source state.
         */
        public void copyFrom(State state) {
            connected = state.connected;
            enabled = state.enabled;
            level = state.level;
            iconGroup = state.iconGroup;
            inetCondition = state.inetCondition;
            activityIn = state.activityIn;
            activityOut = state.activityOut;
            rssi = state.rssi;
            time = state.time;
        }

        @Override
        public String toString() {
            if (time != 0) {
                StringBuilder builder = new StringBuilder();
                toString(builder);
                return builder.toString();
            } else {
                return "Empty " + getClass().getSimpleName();
            }
        }

        protected void toString(StringBuilder builder) {
            builder.append("connected=").append(connected).append(',')
                .append("enabled=").append(enabled).append(',')
                .append("level=").append(level).append(',')
                .append("inetCondition=").append(inetCondition).append(',')
                .append("iconGroup=").append(iconGroup).append(',')
                .append("activityIn=").append(activityIn).append(',')
                .append("activityOut=").append(activityOut).append(',')
                .append("rssi=").append(rssi).append(',')
                .append("lastModified=").append(sSDF.format(time));
        }

        @Override
        public boolean equals(Object o) {
            if (!o.getClass().equals(getClass())) {
                return false;
            }
            State other = (State) o;
            return other.connected == connected
                    && other.enabled == enabled
                    && other.level == level
                    && other.inetCondition == inetCondition
                    && other.iconGroup == iconGroup
                    && other.activityIn == activityIn
                    && other.activityOut == activityOut
                    && other.rssi == rssi;
        }

        @Override
        public int hashCode() {
            return Objects.hash(
                    connected,
                    enabled,
                    level,
                    inetCondition,
                    iconGroup,
                    activityIn,
                    activityOut,
                    rssi);
        }
    }

    /**
     * Holds icons for a given MobileState.
     */
@@ -189,110 +98,4 @@ public class SignalIcon {
            this.dataType = dataType;
        }
    }

    /**
     * Holds mobile states for SysUI.
     */
    public static class MobileState extends State {
        public String networkName;
        public String networkNameData;
        public boolean dataSim;
        public boolean dataConnected;
        public boolean isEmergency;
        public boolean airplaneMode;
        public boolean carrierNetworkChangeMode;
        public boolean isDefault;
        public boolean userSetup;
        public boolean roaming;
        public boolean defaultDataOff;  // Tracks the on/off state of the defaultDataSubscription

        @Override
        public void copyFrom(State s) {
            super.copyFrom(s);
            MobileState state = (MobileState) s;
            dataSim = state.dataSim;
            networkName = state.networkName;
            networkNameData = state.networkNameData;
            dataConnected = state.dataConnected;
            isDefault = state.isDefault;
            isEmergency = state.isEmergency;
            airplaneMode = state.airplaneMode;
            carrierNetworkChangeMode = state.carrierNetworkChangeMode;
            userSetup = state.userSetup;
            roaming = state.roaming;
            defaultDataOff = state.defaultDataOff;
        }

        /** @return true if this state is disabled or not default data */
        public boolean isDataDisabledOrNotDefault() {
            return (iconGroup == TelephonyIcons.DATA_DISABLED
                    || (iconGroup == TelephonyIcons.NOT_DEFAULT_DATA)) && userSetup;
        }

        /** @return if this state is considered to have inbound activity */
        public boolean hasActivityIn() {
            return dataConnected && !carrierNetworkChangeMode && activityIn;
        }

        /** @return if this state is considered to have outbound activity */
        public boolean hasActivityOut() {
            return dataConnected && !carrierNetworkChangeMode && activityOut;
        }

        /** @return true if this state should show a RAT icon in quick settings */
        public boolean showQuickSettingsRatIcon() {
            return dataConnected || isDataDisabledOrNotDefault();
        }

        @Override
        protected void toString(StringBuilder builder) {
            super.toString(builder);
            builder.append(',');
            builder.append("dataSim=").append(dataSim).append(',');
            builder.append("networkName=").append(networkName).append(',');
            builder.append("networkNameData=").append(networkNameData).append(',');
            builder.append("dataConnected=").append(dataConnected).append(',');
            builder.append("roaming=").append(roaming).append(',');
            builder.append("isDefault=").append(isDefault).append(',');
            builder.append("isEmergency=").append(isEmergency).append(',');
            builder.append("airplaneMode=").append(airplaneMode).append(',');
            builder.append("carrierNetworkChangeMode=").append(carrierNetworkChangeMode)
                    .append(',');
            builder.append("userSetup=").append(userSetup).append(',');
            builder.append("defaultDataOff=").append(defaultDataOff).append(',');
            builder.append("showQuickSettingsRatIcon=").append(showQuickSettingsRatIcon());
        }

        @Override
        public boolean equals(Object o) {
            return super.equals(o)
                    && Objects.equals(((MobileState) o).networkName, networkName)
                    && Objects.equals(((MobileState) o).networkNameData, networkNameData)
                    && ((MobileState) o).dataSim == dataSim
                    && ((MobileState) o).dataConnected == dataConnected
                    && ((MobileState) o).isEmergency == isEmergency
                    && ((MobileState) o).airplaneMode == airplaneMode
                    && ((MobileState) o).carrierNetworkChangeMode == carrierNetworkChangeMode
                    && ((MobileState) o).userSetup == userSetup
                    && ((MobileState) o).isDefault == isDefault
                    && ((MobileState) o).roaming == roaming
                    && ((MobileState) o).defaultDataOff == defaultDataOff;
        }

        @Override
        public int hashCode() {
            return Objects.hash(super.hashCode(),
                    networkName,
                    networkNameData,
                    dataSim,
                    dataConnected,
                    isEmergency,
                    airplaneMode,
                    carrierNetworkChangeMode,
                    userSetup,
                    isDefault,
                    roaming,
                    defaultDataOff);
        }
    }
}
+7 −5
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.systemui.qs.carrier;
import static android.view.View.IMPORTANT_FOR_ACCESSIBILITY_YES;

import android.annotation.MainThread;
import android.annotation.NonNull;
import android.content.Context;
import android.content.Intent;
import android.os.Handler;
@@ -42,8 +43,10 @@ import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.statusbar.connectivity.IconState;
import com.android.systemui.statusbar.connectivity.MobileDataIndicators;
import com.android.systemui.statusbar.connectivity.NetworkController;
import com.android.systemui.statusbar.connectivity.NetworkController.MobileDataIndicators;
import com.android.systemui.statusbar.connectivity.SignalCallback;
import com.android.systemui.util.CarrierConfigTracker;

import java.util.function.Consumer;
@@ -81,10 +84,9 @@ public class QSCarrierGroupController {

    private final SlotIndexResolver mSlotIndexResolver;

    private final NetworkController.SignalCallback mSignalCallback =
            new NetworkController.SignalCallback() {
    private final SignalCallback mSignalCallback = new SignalCallback() {
                @Override
                public void setMobileDataIndicators(MobileDataIndicators indicators) {
                public void setMobileDataIndicators(@NonNull MobileDataIndicators indicators) {
                    if (mProviderModel) {
                        return;
                    }
@@ -109,7 +111,7 @@ public class QSCarrierGroupController {
                }

                @Override
                public void setCallIndicator(NetworkController.IconState statusIcon, int subId) {
                public void setCallIndicator(@NonNull IconState statusIcon, int subId) {
                    if (!mProviderModel) {
                        return;
                    }
+5 −4
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.systemui.qs.tiles;

import static android.media.MediaRouter.ROUTE_TYPE_REMOTE_DISPLAY;

import android.annotation.NonNull;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
@@ -52,7 +53,8 @@ import com.android.systemui.qs.QSHost;
import com.android.systemui.qs.logging.QSLogger;
import com.android.systemui.qs.tileimpl.QSTileImpl;
import com.android.systemui.statusbar.connectivity.NetworkController;
import com.android.systemui.statusbar.connectivity.NetworkController.WifiIndicators;
import com.android.systemui.statusbar.connectivity.SignalCallback;
import com.android.systemui.statusbar.connectivity.WifiIndicators;
import com.android.systemui.statusbar.phone.SystemUIDialog;
import com.android.systemui.statusbar.policy.CastController;
import com.android.systemui.statusbar.policy.CastController.CastDevice;
@@ -273,10 +275,9 @@ public class CastTile extends QSTileImpl<BooleanState> {
        return mWifiConnected || mHotspotConnected;
    }

    private final NetworkController.SignalCallback mSignalCallback =
            new NetworkController.SignalCallback() {
    private final SignalCallback mSignalCallback = new SignalCallback() {
                @Override
                public void setWifiIndicators(WifiIndicators indicators) {
                public void setWifiIndicators(@NonNull WifiIndicators indicators) {
                    // statusIcon.visible has the connected status information
                    boolean enabledAndConnected = indicators.enabled
                            && (indicators.qsIcon == null ? false : indicators.qsIcon.visible);
+6 −5
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.systemui.qs.tiles;

import static com.android.systemui.Prefs.Key.QS_HAS_TURNED_OFF_MOBILE_DATA;

import android.annotation.NonNull;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.Context;
@@ -56,10 +57,10 @@ import com.android.systemui.qs.QSHost;
import com.android.systemui.qs.SignalTileView;
import com.android.systemui.qs.logging.QSLogger;
import com.android.systemui.qs.tileimpl.QSTileImpl;
import com.android.systemui.statusbar.connectivity.IconState;
import com.android.systemui.statusbar.connectivity.MobileDataIndicators;
import com.android.systemui.statusbar.connectivity.NetworkController;
import com.android.systemui.statusbar.connectivity.NetworkController.IconState;
import com.android.systemui.statusbar.connectivity.NetworkController.MobileDataIndicators;
import com.android.systemui.statusbar.connectivity.NetworkController.SignalCallback;
import com.android.systemui.statusbar.connectivity.SignalCallback;
import com.android.systemui.statusbar.phone.SystemUIDialog;

import javax.inject.Inject;
@@ -269,7 +270,7 @@ public class CellularTile extends QSTileImpl<SignalState> {
        private final CallbackInfo mInfo = new CallbackInfo();

        @Override
        public void setMobileDataIndicators(MobileDataIndicators indicators) {
        public void setMobileDataIndicators(@NonNull MobileDataIndicators indicators) {
            if (indicators.qsIcon == null) {
                // Not data sim, don't display.
                return;
@@ -291,7 +292,7 @@ public class CellularTile extends QSTileImpl<SignalState> {
        }

        @Override
        public void setIsAirplaneMode(IconState icon) {
        public void setIsAirplaneMode(@NonNull IconState icon) {
            mInfo.airplaneModeEnabled = icon.visible;
            refreshState(mInfo);
        }
+9 −8
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.systemui.qs.tiles;

import android.annotation.NonNull;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
@@ -52,13 +53,13 @@ import com.android.systemui.qs.QSHost;
import com.android.systemui.qs.logging.QSLogger;
import com.android.systemui.qs.tileimpl.QSTileImpl;
import com.android.systemui.qs.tiles.dialog.InternetDialogFactory;
import com.android.systemui.statusbar.connectivity.AccessPointController;
import com.android.systemui.statusbar.connectivity.IconState;
import com.android.systemui.statusbar.connectivity.MobileDataIndicators;
import com.android.systemui.statusbar.connectivity.NetworkController;
import com.android.systemui.statusbar.connectivity.NetworkController.AccessPointController;
import com.android.systemui.statusbar.connectivity.NetworkController.IconState;
import com.android.systemui.statusbar.connectivity.NetworkController.MobileDataIndicators;
import com.android.systemui.statusbar.connectivity.NetworkController.SignalCallback;
import com.android.systemui.statusbar.connectivity.NetworkController.WifiIndicators;
import com.android.systemui.statusbar.connectivity.SignalCallback;
import com.android.systemui.statusbar.connectivity.WifiIcons;
import com.android.systemui.statusbar.connectivity.WifiIndicators;

import java.io.FileDescriptor;
import java.io.PrintWriter;
@@ -250,7 +251,7 @@ public class InternetTile extends QSTileImpl<SignalState> {


        @Override
        public void setWifiIndicators(WifiIndicators indicators) {
        public void setWifiIndicators(@NonNull WifiIndicators indicators) {
            if (DEBUG) {
                Log.d(TAG, "setWifiIndicators: " + indicators);
            }
@@ -271,7 +272,7 @@ public class InternetTile extends QSTileImpl<SignalState> {
        }

        @Override
        public void setMobileDataIndicators(MobileDataIndicators indicators) {
        public void setMobileDataIndicators(@NonNull MobileDataIndicators indicators) {
            if (DEBUG) {
                Log.d(TAG, "setMobileDataIndicators: " + indicators);
            }
@@ -293,7 +294,7 @@ public class InternetTile extends QSTileImpl<SignalState> {
        }

        @Override
        public void setEthernetIndicators(IconState icon) {
        public void setEthernetIndicators(@NonNull IconState icon) {
            if (DEBUG) {
                Log.d(TAG, "setEthernetIndicators: "
                        + "icon = " + (icon == null ? "" :  icon.toString()));
Loading