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

Commit 5fa5219d authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Snap for 5663820 from afa38d35 to qt-release

Change-Id: I4a4e8b531ae61d1d35621399f814089503a6e059
parents 61e83f04 afa38d35
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -108,6 +108,14 @@ public class MultiSimSettingController extends Handler {
    /** The singleton instance. */
    private static MultiSimSettingController sInstance = null;

    // This will be set true when handling EVENT_ALL_SUBSCRIPTIONS_LOADED. The reason of keeping
    // a local variable instead of calling SubscriptionInfoUpdater#isSubInfoInitialized is, there
    // might be a race condition that we receive EVENT_SUBSCRIPTION_INFO_CHANGED first, then
    // EVENT_ALL_SUBSCRIPTIONS_LOADED. And calling SubscriptionInfoUpdater#isSubInfoInitialized
    // will make us handle EVENT_SUBSCRIPTION_INFO_CHANGED unexpectedly and causing us to believe
    // the SIMs are newly inserted instead of being initialized.
    private boolean mSubInfoInitialized = false;

    /**
     * Return the singleton or create one if not existed.
     */
@@ -250,6 +258,7 @@ public class MultiSimSettingController extends Handler {
     */
    private void onAllSubscriptionsLoaded() {
        if (DBG) log("onAllSubscriptionsLoaded");
        mSubInfoInitialized = true;
        updateDefaults(/*init*/ true);
        disableDataForNonDefaultNonOpportunisticSubscriptions();
    }
@@ -261,7 +270,7 @@ public class MultiSimSettingController extends Handler {
     */
    private void onSubscriptionsChanged() {
        if (DBG) log("onSubscriptionsChanged");
        if (!SubscriptionInfoUpdater.isSubInfoInitialized()) return;
        if (!mSubInfoInitialized) return;
        updateDefaults(/*init*/ false);
        disableDataForNonDefaultNonOpportunisticSubscriptions();
    }
@@ -345,7 +354,7 @@ public class MultiSimSettingController extends Handler {
    private void updateDefaults(boolean init) {
        if (DBG) log("updateDefaults");

        if (!SubscriptionInfoUpdater.isSubInfoInitialized()) return;
        if (!mSubInfoInitialized) return;

        List<SubscriptionInfo> activeSubInfos = mSubController
                .getActiveSubscriptionInfoList(mContext.getOpPackageName());
@@ -541,7 +550,7 @@ public class MultiSimSettingController extends Handler {
    }

    private void disableDataForNonDefaultNonOpportunisticSubscriptions() {
        if (!SubscriptionInfoUpdater.isSubInfoInitialized()) return;
        if (!mSubInfoInitialized) return;

        int defaultDataSub = mSubController.getDefaultDataSubId();

+18 −4
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ import android.telephony.DataFailCause;
import android.telephony.NetworkRegistrationInfo;
import android.telephony.Rlog;
import android.telephony.ServiceState;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.telephony.data.ApnSetting;
import android.telephony.data.DataCallResponse;
@@ -154,6 +155,9 @@ public class DataConnection extends StateMachine {
    // The score we report to connectivity service
    private int mScore;

    // The subscription id associated with this data connection.
    private int mSubId;

    // The data connection controller
    private DcController mDcController;

@@ -182,16 +186,18 @@ public class DataConnection extends StateMachine {
        final int mConnectionGeneration;
        @RequestNetworkType
        final int mRequestType;
        final int mSubId;

        ConnectionParams(ApnContext apnContext, int profileId, int rilRadioTechnology,
                         Message onCompletedMsg, int connectionGeneration,
                         @RequestNetworkType int requestType) {
                         @RequestNetworkType int requestType, int subId) {
            mApnContext = apnContext;
            mProfileId = profileId;
            mRilRat = rilRadioTechnology;
            mOnCompletedMsg = onCompletedMsg;
            mConnectionGeneration = connectionGeneration;
            mRequestType = requestType;
            mSubId = subId;
        }

        @Override
@@ -201,6 +207,7 @@ public class DataConnection extends StateMachine {
                    + " mRat=" + mRilRat
                    + " mOnCompletedMsg=" + msgToString(mOnCompletedMsg)
                    + " mRequestType=" + DcTracker.requestTypeToString(mRequestType)
                    + " mSubId=" + mSubId
                    + "}";
        }
    }
@@ -872,6 +879,7 @@ public class DataConnection extends StateMachine {
        mRestrictedNetworkOverride = false;
        mDcFailCause = DataFailCause.NONE;
        mDisabledApnTypeBitMask = 0;
        mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
    }

    /**
@@ -1253,7 +1261,7 @@ public class DataConnection extends StateMachine {
        result.setLinkUpstreamBandwidthKbps(up);
        result.setLinkDownstreamBandwidthKbps(down);

        result.setNetworkSpecifier(new StringNetworkSpecifier(Integer.toString(mPhone.getSubId())));
        result.setNetworkSpecifier(new StringNetworkSpecifier(Integer.toString(mSubId)));

        result.setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING,
                !mPhone.getServiceState().getDataRoaming());
@@ -1723,6 +1731,10 @@ public class DataConnection extends StateMachine {
                        return HANDLED;
                    }

                    if (mSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
                        mSubId = cp.mSubId;
                    }

                    transitionTo(mActivatingState);
                    return HANDLED;
                case EVENT_DISCONNECT:
@@ -2412,16 +2424,17 @@ public class DataConnection extends StateMachine {
     * @param connectionGeneration used to track a single connection request so disconnects can get
     *                             ignored if obsolete.
     * @param requestType Data request type
     * @param subId the subscription id associated with this data connection.
     */
    public void bringUp(ApnContext apnContext, int profileId, int rilRadioTechnology,
                        Message onCompletedMsg, int connectionGeneration,
                        @RequestNetworkType int requestType) {
                        @RequestNetworkType int requestType, int subId) {
        if (DBG) {
            log("bringUp: apnContext=" + apnContext + " onCompletedMsg=" + onCompletedMsg);
        }
        sendMessage(DataConnection.EVENT_CONNECT,
                new ConnectionParams(apnContext, profileId, rilRadioTechnology, onCompletedMsg,
                        connectionGeneration, requestType));
                        connectionGeneration, requestType, subId));
    }

    /**
@@ -2769,6 +2782,7 @@ public class DataConnection extends StateMachine {
        pw.println("mDisconnectParams=" + mDisconnectParams);
        pw.println("mDcFailCause=" + mDcFailCause);
        pw.println("mPhone=" + mPhone);
        pw.println("mSubId=" + mSubId);
        pw.println("mLinkProperties=" + mLinkProperties);
        pw.flush();
        pw.println("mDataRegState=" + mDataRegState);
+1 −1
Original line number Diff line number Diff line
@@ -349,7 +349,7 @@ public class DataEnabledOverride {

        if (phone != null) {
            // Check if the device is on voice call
            if (phone.getCallTracker().getState() != PhoneConstants.State.IDLE) {
            if (phone.getState() != PhoneConstants.State.IDLE) {
                conditions |= OverrideConditions.CONDITION_IN_VOICE_CALL;
            }

+34 −3
Original line number Diff line number Diff line
@@ -17,6 +17,9 @@
package com.android.internal.telephony.dataconnection;


import static android.telephony.PhoneStateListener.LISTEN_CALL_STATE;
import static android.telephony.PhoneStateListener.LISTEN_NONE;

import android.annotation.IntDef;
import android.content.ContentResolver;
import android.content.Context;
@@ -25,9 +28,11 @@ import android.os.RegistrantList;
import android.os.SystemProperties;
import android.provider.Settings;
import android.telephony.CarrierConfigManager;
import android.telephony.PhoneStateListener;
import android.telephony.Rlog;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.telephony.data.ApnSetting;
import android.util.LocalLog;
import android.util.Pair;
@@ -60,7 +65,9 @@ public class DataEnabledSettings {
                    REASON_POLICY_DATA_ENABLED,
                    REASON_DATA_ENABLED_BY_CARRIER,
                    REASON_PROVISIONED_CHANGED,
                    REASON_PROVISIONING_DATA_ENABLED_CHANGED
                    REASON_PROVISIONING_DATA_ENABLED_CHANGED,
                    REASON_OVERRIDE_RULE_CHANGED,
                    REASON_OVERRIDE_CONDITION_CHANGED
            })
    public @interface DataEnabledChangedReason {}

@@ -78,6 +85,10 @@ public class DataEnabledSettings {

    public static final int REASON_PROVISIONING_DATA_ENABLED_CHANGED = 6;

    public static final int REASON_OVERRIDE_RULE_CHANGED = 7;

    public static final int REASON_OVERRIDE_CONDITION_CHANGED = 8;

    /**
     * responds to the setInternalDataEnabled call - used internally to turn off data.
     * For example during emergency calls
@@ -114,6 +125,8 @@ public class DataEnabledSettings {

    private DataEnabledOverride mDataEnabledOverride;

    private TelephonyManager mTelephonyManager;

    // for msim, user data enabled setting depends on subId.
    private final SubscriptionManager.OnSubscriptionsChangedListener
            mOnSubscriptionsChangeListener =
@@ -126,6 +139,7 @@ public class DataEnabledSettings {
                                    + mPhone.getSubId());
                            mSubId = mPhone.getSubId();
                            mDataEnabledOverride = getDataEnabledOverride();
                            updatePhoneStateListener();
                            updateDataEnabledAndNotify(REASON_USER_DATA_ENABLED);
                            mPhone.notifyUserMobileDataStateChanged(isUserDataEnabled());
                        }
@@ -133,6 +147,21 @@ public class DataEnabledSettings {
                }
            };

    private void updatePhoneStateListener() {
        mTelephonyManager.listen(mPhoneStateListener, LISTEN_NONE);
        if (SubscriptionManager.isUsableSubscriptionId(mSubId)) {
            mTelephonyManager = mTelephonyManager.createForSubscriptionId(mSubId);
        }
        mTelephonyManager.listen(mPhoneStateListener, LISTEN_CALL_STATE);
    }

    private final PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
        @Override
        public void onCallStateChanged(@TelephonyManager.CallState int state, String phoneNumber) {
            updateDataEnabledAndNotify(REASON_OVERRIDE_CONDITION_CHANGED);
        }
    };

    @Override
    public String toString() {
        return "[mInternalDataEnabled=" + mInternalDataEnabled
@@ -151,6 +180,8 @@ public class DataEnabledSettings {
        SubscriptionManager subscriptionManager = (SubscriptionManager) mPhone.getContext()
                .getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
        subscriptionManager.addOnSubscriptionsChangedListener(mOnSubscriptionsChangeListener);
        mTelephonyManager = (TelephonyManager) mPhone.getContext()
                .getSystemService(Context.TELEPHONY_SERVICE);
        mDataEnabledOverride = getDataEnabledOverride();
        updateDataEnabled();
    }
@@ -210,7 +241,7 @@ public class DataEnabledSettings {
        boolean changed = SubscriptionController.getInstance()
                .setDataEnabledOverrideRules(mPhone.getSubId(), mDataEnabledOverride.getRules());
        if (changed) {
            updateDataEnabled();
            updateDataEnabledAndNotify(REASON_OVERRIDE_RULE_CHANGED);
            notifyDataEnabledOverrideChanged();
        }

@@ -231,7 +262,7 @@ public class DataEnabledSettings {
        boolean changed = SubscriptionController.getInstance()
                .setDataEnabledOverrideRules(mPhone.getSubId(), mDataEnabledOverride.getRules());
        if (changed) {
            updateDataEnabled();
            updateDataEnabledAndNotify(REASON_OVERRIDE_RULE_CHANGED);
            notifyDataEnabledOverrideChanged();
        }

+2 −1
Original line number Diff line number Diff line
@@ -1965,7 +1965,8 @@ public class DcTracker extends Handler {
        Message msg = obtainMessage();
        msg.what = DctConstants.EVENT_DATA_SETUP_COMPLETE;
        msg.obj = new Pair<ApnContext, Integer>(apnContext, generation);
        dataConnection.bringUp(apnContext, profileId, radioTech, msg, generation, requestType);
        dataConnection.bringUp(apnContext, profileId, radioTech, msg, generation, requestType,
                mPhone.getSubId());

        if (DBG) log("setupData: initing!");
        return true;
Loading