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

Commit 862bd57c authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fixed service state changed event"

parents 3ee31acb 5963f375
Loading
Loading
Loading
Loading
+34 −9
Original line number Diff line number Diff line
@@ -125,6 +125,7 @@ import java.util.Comparator;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
@@ -210,6 +211,7 @@ public class ServiceStateTracker extends Handler {
    @UnsupportedAppUsage
    private RegistrantList mNetworkAttachedRegistrants = new RegistrantList();
    private RegistrantList mNetworkDetachedRegistrants = new RegistrantList();
    private RegistrantList mServiceStateChangedRegistrants = new RegistrantList();
    private RegistrantList mPsRestrictEnabledRegistrants = new RegistrantList();
    private RegistrantList mPsRestrictDisabledRegistrants = new RegistrantList();
    private RegistrantList mImsCapabilityChangedRegistrants = new RegistrantList();
@@ -650,9 +652,6 @@ public class ServiceStateTracker extends Handler {
                .isVoiceCapable();
        mUiccController = UiccController.getInstance();

        mOutOfServiceSS = new ServiceState();
        mOutOfServiceSS.setStateOutOfService();

        mUiccController.registerForIccChanged(this, EVENT_ICC_CHANGED, null);
        mCi.registerForCellInfoList(this, EVENT_UNSOL_CELL_INFO_LIST, null);
        mCi.registerForPhysicalChannelConfiguration(this, EVENT_PHYSICAL_CHANNEL_CONFIG, null);
@@ -664,6 +663,8 @@ public class ServiceStateTracker extends Handler {
        mRestrictedState = new RestrictedState();

        mTransportManager = mPhone.getTransportManager();
        mOutOfServiceSS = new ServiceState();
        mOutOfServiceSS.setOutOfService(mTransportManager.isInLegacyMode(), false);

        for (int transportType : mTransportManager.getAvailableTransports()) {
            mRegStateManagers.append(transportType, new NetworkRegistrationManager(
@@ -759,9 +760,9 @@ public class ServiceStateTracker extends Handler {
        }

        mSS = new ServiceState();
        mSS.setStateOutOfService();
        mSS.setOutOfService(mTransportManager.isInLegacyMode(), false);
        mNewSS = new ServiceState();
        mNewSS.setStateOutOfService();
        mNewSS.setOutOfService(mTransportManager.isInLegacyMode(), false);
        mLastCellInfoReqTime = 0;
        mLastCellInfoList = null;
        mStartedGprsRegCheck = false;
@@ -3323,7 +3324,7 @@ public class ServiceStateTracker extends Handler {

        switch (mCi.getRadioState()) {
            case TelephonyManager.RADIO_POWER_UNAVAILABLE:
                mNewSS.setStateOutOfService();
                mNewSS.setOutOfService(mTransportManager.isInLegacyMode(), false);
                mPhone.getSignalStrengthController().setSignalStrengthDefaultValues();
                mLastNitzData = null;
                mNitzState.handleNetworkUnavailable();
@@ -3331,7 +3332,7 @@ public class ServiceStateTracker extends Handler {
                break;

            case TelephonyManager.RADIO_POWER_OFF:
                mNewSS.setStateOff();
                mNewSS.setOutOfService(mTransportManager.isInLegacyMode(), true);
                mPhone.getSignalStrengthController().setSignalStrengthDefaultValues();
                mLastNitzData = null;
                mNitzState.handleNetworkUnavailable();
@@ -3647,9 +3648,14 @@ public class ServiceStateTracker extends Handler {
            mRejectCode = mNewRejectCode;
        }

        if (!Objects.equals(mSS, mNewSS)) {
            mServiceStateChangedRegistrants.notifyRegistrants();
        }

        ServiceState oldMergedSS = new ServiceState(mPhone.getServiceState());
        mSS = new ServiceState(mNewSS);
        mNewSS.setStateOutOfService();

        mNewSS.setOutOfService(mTransportManager.isInLegacyMode(), false);

        mCellIdentity = primaryCellIdentity;
        if (mSS.getState() == ServiceState.STATE_IN_SERVICE && primaryCellIdentity != null) {
@@ -4941,6 +4947,25 @@ public class ServiceStateTracker extends Handler {
        mImsCapabilityChangedRegistrants.remove(h);
    }

    /**
     * Register for service state changed event.
     *
     * @param h handler to notify
     * @param what what code of message when delivered
     */
    public void registerForServiceStateChanged(Handler h, int what) {
        mServiceStateChangedRegistrants.addUnique(h, what, null);
    }

    /**
     * Unregister for service state changed event.
     *
     * @param h The handler.
     */
    public void unregisterForServiceStateChanged(Handler h) {
        mServiceStateChangedRegistrants.remove(h);
    }

    /**
     * Clean up existing voice and data connection then turn off radio power.
     *
@@ -5559,7 +5584,7 @@ public class ServiceStateTracker extends Handler {
            }
            // operator info should be kept in SS
            String operator = mNewSS.getOperatorAlphaLong();
            mNewSS.setStateOff();
            mNewSS.setOutOfService(mTransportManager.isInLegacyMode(), true);
            if (resetIwlanRatVal) {
                mNewSS.setDataRegState(ServiceState.STATE_IN_SERVICE);
                NetworkRegistrationInfo nri = new NetworkRegistrationInfo.Builder()
+9 −10
Original line number Diff line number Diff line
@@ -842,9 +842,8 @@ public class DataNetworkController extends Handler {
                .registerForServiceBindingChanged(this, EVENT_DATA_SERVICE_BINDING_CHANGED);

        if (!mAccessNetworksManager.isInLegacyMode()) {
            mPhone.getServiceStateTracker().registerForDataRegStateOrRatChanged(
                    AccessNetworkConstants.TRANSPORT_TYPE_WLAN, this, EVENT_SERVICE_STATE_CHANGED,
                    AccessNetworkConstants.TRANSPORT_TYPE_WLAN);
            mPhone.getServiceStateTracker().registerForServiceStateChanged(this,
                    EVENT_SERVICE_STATE_CHANGED);
            mDataServiceManagers.get(AccessNetworkConstants.TRANSPORT_TYPE_WLAN)
                    .registerForServiceBindingChanged(this, EVENT_DATA_SERVICE_BINDING_CHANGED);
        }
@@ -2458,11 +2457,11 @@ public class DataNetworkController extends Handler {
    private void onServiceStateChanged() {
        // Use the raw service state instead of the mPhone.getServiceState().
        ServiceState newServiceState = mPhone.getServiceStateTracker().getServiceState();
        logv("onServiceStateChanged: " + newServiceState);
        StringBuilder debugMessage = new StringBuilder("onServiceStateChanged: ");
        boolean evaluateNetworkRequests = false, evaluateDataNetworks = false;

        if (!mServiceState.equals(newServiceState)) {
            log("onServiceStateChanged: changed to " + newServiceState);
            for (int transport : mAccessNetworksManager.getAvailableTransports()) {
                NetworkRegistrationInfo oldNri = mServiceState.getNetworkRegistrationInfo(
                        NetworkRegistrationInfo.DOMAIN_PS, transport);
@@ -2614,10 +2613,10 @@ public class DataNetworkController extends Handler {
     * @return The current network type.
     */
    private @NetworkType int getDataNetworkType(@TransportType int transport) {
        NetworkRegistrationInfo nrs = mServiceState.getNetworkRegistrationInfo(
        NetworkRegistrationInfo nri = mServiceState.getNetworkRegistrationInfo(
                NetworkRegistrationInfo.DOMAIN_PS, transport);
        if (nrs != null) {
            return nrs.getAccessNetworkTechnology();
        if (nri != null) {
            return nri.getAccessNetworkTechnology();
        }
        return TelephonyManager.NETWORK_TYPE_UNKNOWN;
    }
@@ -2629,10 +2628,10 @@ public class DataNetworkController extends Handler {
     * @return The registration state.
     */
    private @RegistrationState int getDataRegistrationState(@TransportType int transport) {
        NetworkRegistrationInfo nrs = mServiceState.getNetworkRegistrationInfo(
        NetworkRegistrationInfo nri = mServiceState.getNetworkRegistrationInfo(
                NetworkRegistrationInfo.DOMAIN_PS, transport);
        if (nrs != null) {
            return nrs.getRegistrationState();
        if (nri != null) {
            return nri.getRegistrationState();
        }
        return NetworkRegistrationInfo.REGISTRATION_STATE_UNKNOWN;
    }
+5 −1
Original line number Diff line number Diff line
@@ -458,7 +458,11 @@ public class ImsPhone extends ImsPhoneBase {
        mCT.registerPhoneStateListener(mExternalCallTracker);
        mExternalCallTracker.setCallPuller(mCT);

        mSS.setStateOff();
        boolean legacyMode = true;
        if (mDefaultPhone.getTransportManager() != null) {
            legacyMode = mDefaultPhone.getTransportManager().isInLegacyMode();
        }
        mSS.setOutOfService(legacyMode, false);

        mPhoneId = mDefaultPhone.getPhoneId();