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

Commit 3c9b3d9b authored by Nagendra Prasad Nagarle Basavaraju's avatar Nagendra Prasad Nagarle Basavaraju
Browse files

Fix NPE at DisplayInfoController

Avoid pre-mature call of updateTelephonyDisplayInfo() until NetworkTypeController() is being constructed.

Callback when registered if called immediately before the object being constructed, can lead to NPE.

Flag: EXEMPT Bugfix
Bug: 375921149
Bug: 383766616
Test: m and atest
Test: Regression at b/383766616
Change-Id: I9787d304b8fa232dbd68bd986a13a1cd56e1f87f
parent b49a3666
Loading
Loading
Loading
Loading
+24 −13
Original line number Diff line number Diff line
@@ -115,6 +115,13 @@ public class DisplayInfoController extends Handler {
        // EVENT_UPDATE will transition from DefaultState to the current state
        // and update the TelephonyDisplayInfo based on the current state.
        mNetworkTypeController.sendMessage(NetworkTypeController.EVENT_UPDATE);

        // To Support Satellite bandwidth constrained data capability status at telephony
        // display info
        if (mFeatureFlags.carrierEnabledSatelliteFlag()) {
            log("register for satellite network callback");
            mNetworkTypeController.registerForSatelliteNetwork();
        }
    }

    /**
@@ -129,11 +136,12 @@ public class DisplayInfoController extends Handler {
     * NetworkTypeController.
     */
    public void updateTelephonyDisplayInfo() {
        if (mNetworkTypeController != null && mServiceState != null) {
            TelephonyDisplayInfo newDisplayInfo = new TelephonyDisplayInfo(
                    mNetworkTypeController.getDataNetworkType(),
                    mNetworkTypeController.getOverrideNetworkType(),
                    isRoaming(),
                mPhone.getServiceStateTracker().getServiceState().isUsingNonTerrestrialNetwork(),
                    mServiceState.isUsingNonTerrestrialNetwork(),
                    mNetworkTypeController.getSatelliteConstrainedData());
            if (!newDisplayInfo.equals(mTelephonyDisplayInfo)) {
                logl("TelephonyDisplayInfo changed from " + mTelephonyDisplayInfo + " to "
@@ -143,6 +151,9 @@ public class DisplayInfoController extends Handler {
                mTelephonyDisplayInfoChangedRegistrants.notifyRegistrants();
                mPhone.notifyDisplayInfoChanged(mTelephonyDisplayInfo);
            }
        } else {
            loge("Found null object");
        }
    }

    /**
+0 −4
Original line number Diff line number Diff line
@@ -338,10 +338,6 @@ public class NetworkTypeController extends StateMachine {
        mServiceState = mPhone.getServiceStateTracker().getServiceState();
        mPhysicalChannelConfigs = mPhone.getServiceStateTracker().getPhysicalChannelConfigList();

        if(mFeatureFlags.carrierEnabledSatelliteFlag()) {
            registerForSatelliteNetwork();
        }

        sendMessage(EVENT_INITIALIZE);
    }