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

Commit 0d035dd8 authored by Ling Ma's avatar Ling Ma
Browse files

BugFix - IMS features registration state null check

Test: build succeed
Bug: 216489174
Change-Id: I3ce1beab2cdbf3373595f46a26f152d1565d33a0
parent 42719a30
Loading
Loading
Loading
Loading
+13 −15
Original line number Diff line number Diff line
@@ -298,8 +298,8 @@ public class DataNetworkController extends Handler {
     */
    private final @NonNull SparseArray<ImsStateCallback> mImsStateCallbacks = new SparseArray<>();

    /** IMS feature registration state. Key is the IMS feature, value is the registration state. */
    private final @NonNull SparseArray<Boolean> mImsFeatureRegistrationState = new SparseArray<>();
    /** Registered IMS features. Unregistered IMS features are removed from the set. */
    private final @NonNull Set<Integer> mRegisteredImsFeatures = new ArraySet<>();

    /** IMS feature package names. Key is the IMS feature, value is the package name. */
    private final @NonNull SparseArray<String> mImsFeaturePackageName = new SparseArray<>();
@@ -1585,14 +1585,14 @@ public class DataNetworkController extends Handler {
                    public void onRegistered(ImsRegistrationAttributes attributes) {
                        log("IMS " + DataUtils.imsFeatureToString(imsFeature)
                                + " registered. Attributes=" + attributes);
                        mImsFeatureRegistrationState.put(imsFeature, true);
                        mRegisteredImsFeatures.add(imsFeature);
                    }

                    @Override
                    public void onUnregistered(ImsReasonInfo info) {
                        log("IMS " + DataUtils.imsFeatureToString(imsFeature)
                                + " deregistered. Info=" + info);
                        mImsFeatureRegistrationState.put(imsFeature, false);
                        mRegisteredImsFeatures.remove(imsFeature);
                        evaluatePendingImsDeregDataNetworks();
                    }
                };
@@ -2686,7 +2686,7 @@ public class DataNetworkController extends Handler {
            if (imsFeaturePackage != null) {
                if (dataNetwork.getAttachedNetworkRequestList()
                        .hasNetworkRequestsFromPackage(imsFeaturePackage)) {
                    if (mImsFeatureRegistrationState.get(imsFeature)) {
                    if (mRegisteredImsFeatures.contains(imsFeature)) {
                        return false;
                    }
                }
@@ -2714,11 +2714,11 @@ public class DataNetworkController extends Handler {
        if (isImsGracefulTearDownSupported() && !isSafeToTearDown(dataNetwork)) {
            log("tearDownGracefully: Not safe to tear down " + dataNetwork
                    + " at this point. Wait for IMS de-registration or timeout. MMTEL="
                    + (mImsFeatureRegistrationState.get(ImsFeature.FEATURE_MMTEL)
                    ? "registered" : "deregistered")
                    + (mRegisteredImsFeatures.contains(ImsFeature.FEATURE_MMTEL)
                    ? "registered" : "not registered")
                    + ", RCS="
                    + (mImsFeatureRegistrationState.get(ImsFeature.FEATURE_RCS)
                    ? "registered" : "deregistered")
                    + (mRegisteredImsFeatures.contains(ImsFeature.FEATURE_RCS)
                    ? "registered" : "not registered")
            );
            mPendingImsDeregDataNetworks.put(dataNetwork,
                    dataNetwork.tearDownWithCondition(reason, deregDelay));
@@ -2829,13 +2829,11 @@ public class DataNetworkController extends Handler {
        pw.decreaseIndent();

        pw.println("IMS features registration state: MMTEL="
                + (mImsFeatureRegistrationState.get(ImsFeature.FEATURE_MMTEL) != null
                && mImsFeatureRegistrationState.get(ImsFeature.FEATURE_MMTEL)
                ? "registered" : "deregistered")
                + (mRegisteredImsFeatures.contains(ImsFeature.FEATURE_MMTEL)
                ? "registered" : "not registered")
                + ", RCS="
                + (mImsFeatureRegistrationState.get(ImsFeature.FEATURE_RCS) != null
                && mImsFeatureRegistrationState.get(ImsFeature.FEATURE_RCS)
                ? "registered" : "deregistered"));
                + (mRegisteredImsFeatures.contains(ImsFeature.FEATURE_RCS)
                ? "registered" : "not registered"));
        pw.println("mServiceState=" + mServiceState);
        pw.println("mPsRestricted=" + mPsRestricted);
        pw.println("mAnyDataNetworkExisting=" + mAnyDataNetworkExisting);