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

Commit ec65e54a authored by Nathan Harold's avatar Nathan Harold
Browse files

Ensure that onCellInfo is always NonNull

During phone creation and phone count changes,
it was possible to get a null value for onCellInfo().

Since the API is documented as NonNull, always return
a non-null value, forcing an empty list in case there
is still a null lurking somewhere else.

Bug: 237964039
Test: atest TelephonyRegistryTest#testCellInfoChanged
Change-Id: I3b46c211f5542a39187b9d3b137f8483c44ccd39
parent e648d3cb
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -339,7 +339,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {

    private int[] mDataConnectionNetworkType;

    private ArrayList<List<CellInfo>> mCellInfo = null;
    private ArrayList<List<CellInfo>> mCellInfo;

    private Map<Integer, List<EmergencyNumber>> mEmergencyNumberList;

@@ -725,7 +725,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
                mMessageWaiting[i] = false;
                mCallForwarding[i] = false;
                mCellIdentity[i] = null;
                mCellInfo.add(i, null);
                mCellInfo.add(i, Collections.EMPTY_LIST);
                mImsReasonInfo.add(i, null);
                mSrvccState[i] = TelephonyManager.SRVCC_STATE_HANDOVER_NONE;
                mCallDisconnectCause[i] = DisconnectCause.NOT_VALID;
@@ -802,7 +802,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
        mCallNetworkType = new int[numPhones];
        mCallAttributes = new CallAttributes[numPhones];
        mPreciseDataConnectionStates = new ArrayList<>();
        mCellInfo = new ArrayList<>();
        mCellInfo = new ArrayList<>(numPhones);
        mImsReasonInfo = new ArrayList<>();
        mEmergencyNumberList = new HashMap<>();
        mOutgoingCallEmergencyNumber = new EmergencyNumber[numPhones];
@@ -832,7 +832,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
            mMessageWaiting[i] =  false;
            mCallForwarding[i] =  false;
            mCellIdentity[i] = null;
            mCellInfo.add(i, null);
            mCellInfo.add(i, Collections.EMPTY_LIST);
            mImsReasonInfo.add(i, null);
            mSrvccState[i] = TelephonyManager.SRVCC_STATE_HANDOVER_NONE;
            mCallDisconnectCause[i] = DisconnectCause.NOT_VALID;
@@ -1794,10 +1794,17 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
        if (!checkNotifyPermission("notifyCellInfoForSubscriber()")) {
            return;
        }

        if (VDBG) {
            log("notifyCellInfoForSubscriber: subId=" + subId
                + " cellInfo=" + cellInfo);
        }

        if (cellInfo == null) {
            loge("notifyCellInfoForSubscriber() received a null list");
            cellInfo = Collections.EMPTY_LIST;
        }

        int phoneId = getPhoneIdFromSubId(subId);
        synchronized (mRecords) {
            if (validatePhoneId(phoneId)) {