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

Commit 76fc27b9 authored by Nagendra Prasad Nagarle Basavaraju's avatar Nagendra Prasad Nagarle Basavaraju Committed by Android (Google) Code Review
Browse files

Merge "Fix NPE at DataNetworkController" into main

parents b5f7b6dc 7d0fbff5
Loading
Loading
Loading
Loading
+62 −46
Original line number Diff line number Diff line
@@ -2647,7 +2647,7 @@ public class DataNetworkController extends Handler {
                        .unregisterImsRegistrationCallback(oldCallback);
            }
            log("Successfully unregistered " + DataUtils.imsFeatureToString(imsFeature)
                    + " registration state. sudId=" + subId);
                    + " registration state. subId=" + subId);
            mImsFeatureRegistrationCallbacks.remove(imsFeature);
        }
    }
@@ -2658,6 +2658,7 @@ public class DataNetworkController extends Handler {
     * @param subId Subscription index.
     */
    private void registerImsStateCallback(int subId) {
        if (isImsSupportedOnDevice()) {
            Function<Integer, ImsStateCallback> imsFeatureStateCallbackFactory =
                    imsFeature -> new ImsStateCallback() {
                        @Override
@@ -2695,6 +2696,9 @@ public class DataNetworkController extends Handler {
            } catch (ImsException e) {
                loge("Exception when registering IMS state callback. " + e);
            }
        } else {
            log("IMS is not supported on this device, skipping registerImsStateCallback");
        }
    }

    /**
@@ -2703,6 +2707,7 @@ public class DataNetworkController extends Handler {
     * @param subId Subscription index.
     */
    private void unregisterImsStateCallbacks(int subId) {
        if (isImsSupportedOnDevice()) {
            ImsStateCallback callback = mImsStateCallbacks.get(ImsFeature.FEATURE_MMTEL);
            if (callback != null) {
                mImsManager.getImsMmTelManager(subId).unregisterImsStateCallback(callback);
@@ -2716,6 +2721,17 @@ public class DataNetworkController extends Handler {
                mImsStateCallbacks.remove(ImsFeature.FEATURE_RCS);
                log("Unregister RCS state on sub " + subId);
            }
        } else {
            log("IMS is not supported on this device, skipping unregisterImsStateCallbacks");
        }
    }

    /**
     * called to check if FEATURE_TELEPHONY_IMS feature is available
     */
    private boolean isImsSupportedOnDevice() {
        return mPhone.getContext().getPackageManager()
                .hasSystemFeature(PackageManager.FEATURE_TELEPHONY_IMS);
    }

    /** Called when subscription info changed. */
+5 −0
Original line number Diff line number Diff line
@@ -44,6 +44,7 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.annotation.NonNull;
import android.content.pm.PackageManager;
import android.net.ConnectivityManager;
import android.net.InetAddresses;
import android.net.LinkAddress;
@@ -172,6 +173,7 @@ public class DataNetworkControllerTest extends TelephonyTest {
    private RegistrationCallback mMmtelRegCallback;
    private RegistrationCallback mRcsRegCallback;
    private SubscriptionInfo mMockSubInfo;
    private PackageManager mMockPackageManager;

    private int mNetworkRequestId = 0;

@@ -863,6 +865,7 @@ public class DataNetworkControllerTest extends TelephonyTest {
        mMockedDataNetworkControllerCallback = Mockito.mock(DataNetworkControllerCallback.class);
        mMockedDataRetryManagerCallback = Mockito.mock(DataRetryManagerCallback.class);
        mMockSubInfo = Mockito.mock(SubscriptionInfo.class);
        mMockPackageManager = Mockito.mock(PackageManager.class);
        when(mTelephonyComponentFactory.makeDataSettingsManager(any(Phone.class),
                any(DataNetworkController.class), any(FeatureFlags.class), any(Looper.class),
                any(DataSettingsManager.DataSettingsManagerCallback.class))).thenCallRealMethod();
@@ -892,6 +895,8 @@ public class DataNetworkControllerTest extends TelephonyTest {
        doReturn(true).when(mFeatureFlags).satelliteInternet();
        doReturn(true).when(mFeatureFlags)
                .ignoreExistingNetworksForInternetAllowedChecking();
        when(mContext.getPackageManager()).thenReturn(mMockPackageManager);
        doReturn(true).when(mMockPackageManager).hasSystemFeature(anyString());

        List<SubscriptionInfo> infoList = new ArrayList<>();
        infoList.add(mMockSubInfo);