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

Commit 0a5870fa authored by Nagendra Prasad Nagarle Basavaraju's avatar Nagendra Prasad Nagarle Basavaraju Committed by Android Build Coastguard Worker
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
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:3c9b3d9b565fbb232130a092c738d4f78bcf1928)
Merged-In: I9787d304b8fa232dbd68bd986a13a1cd56e1f87f
Change-Id: I9787d304b8fa232dbd68bd986a13a1cd56e1f87f
parent 54782b13
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);
    }