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

Commit d05d4d04 authored by Sungcheol Ahn's avatar Sungcheol Ahn
Browse files

ImsReasonInfo set an initial value and added a null check

the last ImsReasonInfo value was kept when callback was registered without initial set.
To prevent @NonNull violations, ImsReasonInfoi set an initial value and added a null check.

Bug: 267671502
Test: atest CtsTelephonyTestCases: PhoneStateListenerTest
Test: atest CtsTelephonyTestCases: TelephonyCallbackTest
Test: atest TelephonyRegistryTest
Test: manual

Change-Id: I884f4ce12fded530a1062bc7c11999334118c63d
parent 720fc762
Loading
Loading
Loading
Loading
+13 −5
Original line number Diff line number Diff line
@@ -846,7 +846,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
            mCallForwarding[i] =  false;
            mCellIdentity[i] = null;
            mCellInfo.add(i, Collections.EMPTY_LIST);
            mImsReasonInfo.add(i, null);
            mImsReasonInfo.add(i, new ImsReasonInfo());
            mSrvccState[i] = TelephonyManager.SRVCC_STATE_HANDOVER_NONE;
            mCallDisconnectCause[i] = DisconnectCause.NOT_VALID;
            mCallPreciseDisconnectCause[i] = PreciseDisconnectCause.NOT_VALID;
@@ -1265,12 +1265,15 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
                    }
                }
                if (events.contains(TelephonyCallback.EVENT_IMS_CALL_DISCONNECT_CAUSE_CHANGED)) {
                    ImsReasonInfo imsReasonInfo = mImsReasonInfo.get(r.phoneId);
                    if (imsReasonInfo != null) {
                        try {
                        r.callback.onImsCallDisconnectCauseChanged(mImsReasonInfo.get(r.phoneId));
                            r.callback.onImsCallDisconnectCauseChanged(imsReasonInfo);
                        } catch (RemoteException ex) {
                            remove(r.binder);
                        }
                    }
                }
                if (events.contains(
                        TelephonyCallback.EVENT_PRECISE_DATA_CONNECTION_STATE_CHANGED)) {
                    try {
@@ -2418,6 +2421,11 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
        int phoneId = getPhoneIdFromSubId(subId);
        synchronized (mRecords) {
            if (validatePhoneId(phoneId)) {
                if (imsReasonInfo == null) {
                    loge("ImsReasonInfo is null, subId=" + subId + ", phoneId=" + phoneId);
                    mImsReasonInfo.set(phoneId, new ImsReasonInfo());
                    return;
                }
                mImsReasonInfo.set(phoneId, imsReasonInfo);
                for (Record r : mRecords) {
                    if (r.matchTelephonyCallbackEvent(