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

Commit afa38d35 authored by Xiangyu/Malcolm Chen's avatar Xiangyu/Malcolm Chen Committed by Android (Google) Code Review
Browse files

Merge ""Data during calls" toggle not working." into qt-dev

parents 8dee54e3 261fb784
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -349,7 +349,7 @@ public class DataEnabledOverride {


        if (phone != null) {
        if (phone != null) {
            // Check if the device is on voice call
            // 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;
                conditions |= OverrideConditions.CONDITION_IN_VOICE_CALL;
            }
            }


+34 −3
Original line number Original line Diff line number Diff line
@@ -17,6 +17,9 @@
package com.android.internal.telephony.dataconnection;
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.annotation.IntDef;
import android.content.ContentResolver;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Context;
@@ -25,9 +28,11 @@ import android.os.RegistrantList;
import android.os.SystemProperties;
import android.os.SystemProperties;
import android.provider.Settings;
import android.provider.Settings;
import android.telephony.CarrierConfigManager;
import android.telephony.CarrierConfigManager;
import android.telephony.PhoneStateListener;
import android.telephony.Rlog;
import android.telephony.Rlog;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.telephony.data.ApnSetting;
import android.telephony.data.ApnSetting;
import android.util.LocalLog;
import android.util.LocalLog;
import android.util.Pair;
import android.util.Pair;
@@ -60,7 +65,9 @@ public class DataEnabledSettings {
                    REASON_POLICY_DATA_ENABLED,
                    REASON_POLICY_DATA_ENABLED,
                    REASON_DATA_ENABLED_BY_CARRIER,
                    REASON_DATA_ENABLED_BY_CARRIER,
                    REASON_PROVISIONED_CHANGED,
                    REASON_PROVISIONED_CHANGED,
                    REASON_PROVISIONING_DATA_ENABLED_CHANGED
                    REASON_PROVISIONING_DATA_ENABLED_CHANGED,
                    REASON_OVERRIDE_RULE_CHANGED,
                    REASON_OVERRIDE_CONDITION_CHANGED
            })
            })
    public @interface DataEnabledChangedReason {}
    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_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.
     * responds to the setInternalDataEnabled call - used internally to turn off data.
     * For example during emergency calls
     * For example during emergency calls
@@ -114,6 +125,8 @@ public class DataEnabledSettings {


    private DataEnabledOverride mDataEnabledOverride;
    private DataEnabledOverride mDataEnabledOverride;


    private TelephonyManager mTelephonyManager;

    // for msim, user data enabled setting depends on subId.
    // for msim, user data enabled setting depends on subId.
    private final SubscriptionManager.OnSubscriptionsChangedListener
    private final SubscriptionManager.OnSubscriptionsChangedListener
            mOnSubscriptionsChangeListener =
            mOnSubscriptionsChangeListener =
@@ -126,6 +139,7 @@ public class DataEnabledSettings {
                                    + mPhone.getSubId());
                                    + mPhone.getSubId());
                            mSubId = mPhone.getSubId();
                            mSubId = mPhone.getSubId();
                            mDataEnabledOverride = getDataEnabledOverride();
                            mDataEnabledOverride = getDataEnabledOverride();
                            updatePhoneStateListener();
                            updateDataEnabledAndNotify(REASON_USER_DATA_ENABLED);
                            updateDataEnabledAndNotify(REASON_USER_DATA_ENABLED);
                            mPhone.notifyUserMobileDataStateChanged(isUserDataEnabled());
                            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
    @Override
    public String toString() {
    public String toString() {
        return "[mInternalDataEnabled=" + mInternalDataEnabled
        return "[mInternalDataEnabled=" + mInternalDataEnabled
@@ -151,6 +180,8 @@ public class DataEnabledSettings {
        SubscriptionManager subscriptionManager = (SubscriptionManager) mPhone.getContext()
        SubscriptionManager subscriptionManager = (SubscriptionManager) mPhone.getContext()
                .getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
                .getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
        subscriptionManager.addOnSubscriptionsChangedListener(mOnSubscriptionsChangeListener);
        subscriptionManager.addOnSubscriptionsChangedListener(mOnSubscriptionsChangeListener);
        mTelephonyManager = (TelephonyManager) mPhone.getContext()
                .getSystemService(Context.TELEPHONY_SERVICE);
        mDataEnabledOverride = getDataEnabledOverride();
        mDataEnabledOverride = getDataEnabledOverride();
        updateDataEnabled();
        updateDataEnabled();
    }
    }
@@ -210,7 +241,7 @@ public class DataEnabledSettings {
        boolean changed = SubscriptionController.getInstance()
        boolean changed = SubscriptionController.getInstance()
                .setDataEnabledOverrideRules(mPhone.getSubId(), mDataEnabledOverride.getRules());
                .setDataEnabledOverrideRules(mPhone.getSubId(), mDataEnabledOverride.getRules());
        if (changed) {
        if (changed) {
            updateDataEnabled();
            updateDataEnabledAndNotify(REASON_OVERRIDE_RULE_CHANGED);
            notifyDataEnabledOverrideChanged();
            notifyDataEnabledOverrideChanged();
        }
        }


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


+7 −6
Original line number Original line Diff line number Diff line
@@ -68,12 +68,12 @@ public class DataEnabledOverrideTest extends TelephonyTest {
        assertTrue(dataEnabledOverride.shouldOverrideDataEnabledSettings(
        assertTrue(dataEnabledOverride.shouldOverrideDataEnabledSettings(
                mPhone, ApnSetting.TYPE_MMS));
                mPhone, ApnSetting.TYPE_MMS));


        doReturn(PhoneConstants.State.IDLE).when(mCT).getState();
        doReturn(PhoneConstants.State.IDLE).when(mPhone).getState();


        assertFalse(dataEnabledOverride.shouldOverrideDataEnabledSettings(
        assertFalse(dataEnabledOverride.shouldOverrideDataEnabledSettings(
                mPhone, ApnSetting.TYPE_DEFAULT));
                mPhone, ApnSetting.TYPE_DEFAULT));


        doReturn(PhoneConstants.State.OFFHOOK).when(mCT).getState();
        doReturn(PhoneConstants.State.OFFHOOK).when(mPhone).getState();


        assertTrue(dataEnabledOverride.shouldOverrideDataEnabledSettings(
        assertTrue(dataEnabledOverride.shouldOverrideDataEnabledSettings(
                mPhone, ApnSetting.TYPE_DEFAULT));
                mPhone, ApnSetting.TYPE_DEFAULT));
@@ -98,12 +98,12 @@ public class DataEnabledOverrideTest extends TelephonyTest {
        assertTrue(dataEnabledOverride.shouldOverrideDataEnabledSettings(
        assertTrue(dataEnabledOverride.shouldOverrideDataEnabledSettings(
                mPhone, ApnSetting.TYPE_MMS));
                mPhone, ApnSetting.TYPE_MMS));


        doReturn(PhoneConstants.State.IDLE).when(mCT).getState();
        doReturn(PhoneConstants.State.IDLE).when(mPhone).getState();


        assertFalse(dataEnabledOverride.shouldOverrideDataEnabledSettings(
        assertFalse(dataEnabledOverride.shouldOverrideDataEnabledSettings(
                mPhone, ApnSetting.TYPE_DEFAULT));
                mPhone, ApnSetting.TYPE_DEFAULT));


        doReturn(PhoneConstants.State.OFFHOOK).when(mCT).getState();
        doReturn(PhoneConstants.State.OFFHOOK).when(mPhone).getState();


        assertTrue(dataEnabledOverride.shouldOverrideDataEnabledSettings(
        assertTrue(dataEnabledOverride.shouldOverrideDataEnabledSettings(
                mPhone, ApnSetting.TYPE_DEFAULT));
                mPhone, ApnSetting.TYPE_DEFAULT));
@@ -138,7 +138,7 @@ public class DataEnabledOverrideTest extends TelephonyTest {
    @SmallTest
    @SmallTest
    public void testAllApnTypesInRule() throws Exception {
    public void testAllApnTypesInRule() throws Exception {
        DataEnabledOverride dataEnabledOverride = new DataEnabledOverride("*=inVoiceCall");
        DataEnabledOverride dataEnabledOverride = new DataEnabledOverride("*=inVoiceCall");
        doReturn(PhoneConstants.State.OFFHOOK).when(mCT).getState();
        doReturn(PhoneConstants.State.OFFHOOK).when(mPhone).getState();


        assertTrue(dataEnabledOverride.shouldOverrideDataEnabledSettings(
        assertTrue(dataEnabledOverride.shouldOverrideDataEnabledSettings(
                mPhone, ApnSetting.TYPE_FOTA));
                mPhone, ApnSetting.TYPE_FOTA));
@@ -208,7 +208,8 @@ public class DataEnabledOverrideTest extends TelephonyTest {
        assertTrue(deo.isDataAllowedInVoiceCall());
        assertTrue(deo.isDataAllowedInVoiceCall());
        doReturn(1).when(mPhone).getSubId();
        doReturn(1).when(mPhone).getSubId();
        doReturn(2).when(mSubscriptionController).getDefaultSmsSubId();
        doReturn(2).when(mSubscriptionController).getDefaultSmsSubId();
        doReturn(PhoneConstants.State.OFFHOOK).when(mCT).getState();

        doReturn(PhoneConstants.State.OFFHOOK).when(mPhone).getState();
        assertTrue(deo.getRules(), deo.shouldOverrideDataEnabledSettings(mPhone,
        assertTrue(deo.getRules(), deo.shouldOverrideDataEnabledSettings(mPhone,
                ApnSetting.TYPE_DEFAULT));
                ApnSetting.TYPE_DEFAULT));
        deo.setDataAllowedInVoiceCall(false);
        deo.setDataAllowedInVoiceCall(false);