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

Commit 1114813e authored by Malcolm Chen's avatar Malcolm Chen
Browse files

Return correct preferredDataSubscription from PhoneSwitcher.

Bug: 123956125
Test: manual
Change-Id: Ie89745292c4e33df4f4c12c7624dfd0c276c6e16
Merged-In: Ie89745292c4e33df4f4c12c7624dfd0c276c6e16
parent aac26c57
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ import android.os.Message;
import android.os.Registrant;
import android.os.RegistrantList;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.telephony.PhoneCapability;
import android.telephony.PhoneStateListener;
import android.telephony.PreciseCallState;
@@ -854,6 +855,7 @@ public class PhoneSwitcher extends Handler {
            mPreferredDataSubId = subId;
            logDataSwitchEvent(TelephonyEvent.EventState.START, DataSwitch.Reason.CBRS);
            onEvaluate(REQUESTS_UNCHANGED, "preferredDataSubscriptionIdChanged");
            notifyPreferredDataSubIdChanged();
            registerDefaultNetworkChangeCallback();
        }
    }
@@ -872,10 +874,22 @@ public class PhoneSwitcher extends Handler {
    // TODO b/123598154: rename preferredDataSub to opportunisticSubId.
    public void trySetPreferredSubscription(int subId, boolean needValidation,
            ISetOpportunisticDataCallback callback) {
        log("Try set preferred subscription to subId " + subId
                + (needValidation ? " with " : " without ") + "validation");
        PhoneSwitcher.this.obtainMessage(EVENT_CHANGE_PREFERRED_SUBSCRIPTION,
                subId, needValidation ? 1 : 0, callback).sendToTarget();
    }

    private void notifyPreferredDataSubIdChanged() {
        ITelephonyRegistry tr = ITelephonyRegistry.Stub.asInterface(ServiceManager.getService(
                "telephony.registry"));
        try {
            tr.notifyPreferredDataSubIdChanged(mPreferredDataSubId);
        } catch (RemoteException ex) {
            // Should never happen because TelephonyRegistry service should always be available.
        }
    }

    private boolean isCallActive(Phone phone) {
        if (phone == null) {
            return false;
@@ -890,6 +904,10 @@ public class PhoneSwitcher extends Handler {
                ? HAL_COMMAND_PREFERRED_DATA : HAL_COMMAND_ALLOW_DATA;
    }

    public int getPreferredDataSubscriptionId() {
        return mPreferredDataSubId;
    }

    private void log(String l) {
        Rlog.d(LOG_TAG, l);
        mLocalLog.log(l);
+4 −9
Original line number Diff line number Diff line
@@ -2706,17 +2706,12 @@ public class SubscriptionController extends ISub.Stub {
    @Override
    public int getPreferredDataSubscriptionId() {
        enforceReadPrivilegedPhoneState("getPreferredDataSubscriptionId");
        return mPreferredDataSubId;
    }
        final long token = Binder.clearCallingIdentity();

    private void notifyPreferredDataSubIdChanged() {
        ITelephonyRegistry tr = ITelephonyRegistry.Stub.asInterface(ServiceManager.getService(
                "telephony.registry"));
        try {
            if (DBG) logd("notifyPreferredDataSubIdChanged:");
            tr.notifyPreferredDataSubIdChanged(mPreferredDataSubId);
        } catch (RemoteException ex) {
            // Should never happen because its always available.
            return PhoneSwitcher.getInstance().getPreferredDataSubscriptionId();
        } finally {
            Binder.restoreCallingIdentity(token);
        }
    }