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

Commit bfecf756 authored by Jack Yu's avatar Jack Yu
Browse files

Added isActiveSubId support

Also replaced several instance of using the legacy
SubscriptionController.

Test: atest SubscriptionManagerServiceTest
Bug: 239607619
Merged-In: I369dd7a0f60952d9fef5265f4779a98df97f7da3
Change-Id: I369dd7a0f60952d9fef5265f4779a98df97f7da3
parent daca795b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -905,7 +905,7 @@ public class MultiSimSettingController extends Handler {
     */
    private void setRoamingDataEnabledForGroup(int subId, boolean enable) {
        List<SubscriptionInfo> infoList;
        if (PhoneFactory.getDefaultPhone().isSubscriptionManagerServiceEnabled()) {
        if (PhoneFactory.isSubscriptionManagerServiceEnabled()) {
            infoList = SubscriptionManagerService.getInstance().getSubscriptionsInGroup(
                    mSubController.getGroupUuid(subId), mContext.getOpPackageName(),
                    mContext.getAttributionTag());
+1 −1
Original line number Diff line number Diff line
@@ -197,7 +197,7 @@ public final class NetworkScanRequestTracker {
    public static Set<String> getAllowedMccMncsForLocationRestrictedScan(Context context) {
        final long token = Binder.clearCallingIdentity();
        try {
            if (PhoneFactory.getDefaultPhone().isSubscriptionManagerServiceEnabled()) {
            if (PhoneFactory.isSubscriptionManagerServiceEnabled()) {
                return SubscriptionManagerService.getInstance()
                        .getAvailableSubscriptionInfoList(context.getOpPackageName(),
                                context.getAttributionTag()).stream()
+11 −1
Original line number Diff line number Diff line
@@ -82,6 +82,7 @@ import com.android.internal.telephony.imsphone.ImsPhone;
import com.android.internal.telephony.imsphone.ImsPhoneCall;
import com.android.internal.telephony.metrics.SmsStats;
import com.android.internal.telephony.metrics.VoiceCallSessionStats;
import com.android.internal.telephony.subscription.SubscriptionInfoInternal;
import com.android.internal.telephony.subscription.SubscriptionManagerService;
import com.android.internal.telephony.test.SimulatedRadioControl;
import com.android.internal.telephony.uicc.IccCardApplicationStatus.AppType;
@@ -4377,7 +4378,16 @@ public abstract class Phone extends Handler implements PhoneInternalInterface {
    }

    private int getResolvedUsageSetting(int subId) {
        SubscriptionInfo subInfo = SubscriptionController.getInstance().getSubscriptionInfo(subId);
        SubscriptionInfo subInfo = null;
        if (isSubscriptionManagerServiceEnabled()) {
            SubscriptionInfoInternal subInfoInternal = mSubscriptionManagerService
                    .getSubscriptionInfoInternal(subId);
            if (subInfoInternal != null) {
                subInfo = subInfoInternal.toSubscriptionInfo();
            }
        } else {
            subInfo = SubscriptionController.getInstance().getSubscriptionInfo(subId);
        }

        if (subInfo == null
                || subInfo.getUsageSetting() == SubscriptionManager.USAGE_SETTING_UNKNOWN) {
+13 −3
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ import android.telephony.TelephonyManager;
import android.util.Log;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.subscription.SubscriptionManagerService;
import com.android.telephony.Rlog;

import java.util.HashMap;
@@ -366,7 +367,11 @@ public class PhoneConfigurationManager {
            // eg if we are going from 2 phones to 1 phone, we need to deregister RIL for the
            // second phone. This loop does nothing if numOfActiveModems is increasing.
            for (int phoneId = numOfActiveModems; phoneId < oldNumOfActiveModems; phoneId++) {
                if (PhoneFactory.isSubscriptionManagerServiceEnabled()) {
                    SubscriptionManagerService.getInstance().markSubscriptionsInactive(phoneId);
                } else {
                    SubscriptionController.getInstance().clearSubInfoRecord(phoneId);
                }
                subInfoCleared = true;
                mPhones[phoneId].mCi.onSlotActiveStatusChange(
                        SubscriptionManager.isValidPhoneId(phoneId));
@@ -400,8 +405,13 @@ public class PhoneConfigurationManager {
                        + "setting VOICE & SMS subId to -1 (No Preference)");

                //Set the default VOICE subId to -1 ("No Preference")
                if (PhoneFactory.isSubscriptionManagerServiceEnabled()) {
                    SubscriptionManagerService.getInstance().setDefaultVoiceSubId(
                            SubscriptionManager.INVALID_SUBSCRIPTION_ID);
                } else {
                    SubscriptionController.getInstance().setDefaultVoiceSubId(
                            SubscriptionManager.INVALID_SUBSCRIPTION_ID);
                }

                //TODO:: Set the default SMS sub to "No Preference". Tracking this bug (b/227386042)
            } else {
+48 −25
Original line number Diff line number Diff line
@@ -104,6 +104,8 @@ public class PhoneFactory {
    private static MetricsCollector sMetricsCollector;
    private static RadioInterfaceCapabilityController sRadioHalCapabilities;

    private static boolean sSubscriptionManagerServiceEnabled = false;

    //***** Class Methods

    public static void makeDefaultPhones(Context context) {
@@ -119,6 +121,10 @@ public class PhoneFactory {
        synchronized (sLockProxyPhones) {
            if (!sMadeDefaults) {
                sContext = context;

                sSubscriptionManagerServiceEnabled = context.getResources().getBoolean(
                        com.android.internal.R.bool.config_using_subscription_manager_service);

                // create the telephony device controller.
                TelephonyDevController.create();

@@ -196,8 +202,8 @@ public class PhoneFactory {
                // call getInstance()
                sUiccController = UiccController.make(context);

                if (sContext.getResources().getBoolean(
                        com.android.internal.R.bool.config_using_subscription_manager_service)) {

                if (isSubscriptionManagerServiceEnabled()) {
                    Rlog.i(LOG_TAG, "Creating SubscriptionManagerService");
                    sSubscriptionManagerService = new SubscriptionManagerService(context,
                            Looper.myLooper());
@@ -240,13 +246,15 @@ public class PhoneFactory {

                sMadeDefaults = true;

                if (!isSubscriptionManagerServiceEnabled()) {
                    Rlog.i(LOG_TAG, "Creating SubInfoRecordUpdater ");
                    HandlerThread pfhandlerThread = new HandlerThread("PhoneFactoryHandlerThread");
                    pfhandlerThread.start();
                    sSubInfoRecordUpdater = TelephonyComponentFactory.getInstance().inject(
                        SubscriptionInfoUpdater.class.getName()).
                        makeSubscriptionInfoUpdater(pfhandlerThread.
                        getLooper(), context, SubscriptionController.getInstance());
                            SubscriptionInfoUpdater.class.getName())
                            .makeSubscriptionInfoUpdater(pfhandlerThread.getLooper(), context,
                                    SubscriptionController.getInstance());
                }

                // Only bring up IMS if the device supports having an IMS stack.
                if (context.getPackageManager().hasSystemFeature(
@@ -286,6 +294,14 @@ public class PhoneFactory {
        }
    }

    /**
     * @return {@code true} if the new {@link SubscriptionManagerService} is enabled, otherwise the
     * old {@link SubscriptionController} is used.
     */
    public static boolean isSubscriptionManagerServiceEnabled() {
        return sSubscriptionManagerServiceEnabled;
    }

    /**
     * Upon single SIM to dual SIM switch or vice versa, we dynamically allocate or de-allocate
     * Phone and CommandInterface objects.
@@ -442,6 +458,9 @@ public class PhoneFactory {
    /* Gets the default subscription */
    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
    public static int getDefaultSubscription() {
        if (isSubscriptionManagerServiceEnabled()) {
            return SubscriptionManagerService.getInstance().getDefaultSubId();
        }
        return SubscriptionController.getInstance().getDefaultSubId();
    }

@@ -585,6 +604,9 @@ public class PhoneFactory {
        pw.decreaseIndent();
        pw.println("++++++++++++++++++++++++++++++++");

        if (isSubscriptionManagerServiceEnabled()) {
            SubscriptionManagerService.getInstance().dump(fd, pw, args);
        } else {
            pw.println("SubscriptionController:");
            pw.increaseIndent();
            try {
@@ -603,6 +625,7 @@ public class PhoneFactory {
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        pw.flush();
        pw.decreaseIndent();
        pw.println("++++++++++++++++++++++++++++++++");
Loading