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
This commit is contained in:
@@ -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,10 +1265,13 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
|
||||
}
|
||||
}
|
||||
if (events.contains(TelephonyCallback.EVENT_IMS_CALL_DISCONNECT_CAUSE_CHANGED)) {
|
||||
try {
|
||||
r.callback.onImsCallDisconnectCauseChanged(mImsReasonInfo.get(r.phoneId));
|
||||
} catch (RemoteException ex) {
|
||||
remove(r.binder);
|
||||
ImsReasonInfo imsReasonInfo = mImsReasonInfo.get(r.phoneId);
|
||||
if (imsReasonInfo != null) {
|
||||
try {
|
||||
r.callback.onImsCallDisconnectCauseChanged(imsReasonInfo);
|
||||
} catch (RemoteException ex) {
|
||||
remove(r.binder);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (events.contains(
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user