Loading src/java/com/android/internal/telephony/dataconnection/DataEnabledOverride.java +1 −1 Original line number Original line Diff line number Diff line Loading @@ -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; } } Loading src/java/com/android/internal/telephony/dataconnection/DataEnabledSettings.java +34 −3 Original line number Original line Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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 {} Loading @@ -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 Loading Loading @@ -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 = Loading @@ -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()); } } Loading @@ -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 Loading @@ -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(); } } Loading Loading @@ -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(); } } Loading @@ -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(); } } Loading tests/telephonytests/src/com/android/internal/telephony/dataconnection/DataEnabledOverrideTest.java +7 −6 Original line number Original line Diff line number Diff line Loading @@ -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)); Loading @@ -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)); Loading Loading @@ -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)); Loading Loading @@ -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); Loading Loading
src/java/com/android/internal/telephony/dataconnection/DataEnabledOverride.java +1 −1 Original line number Original line Diff line number Diff line Loading @@ -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; } } Loading
src/java/com/android/internal/telephony/dataconnection/DataEnabledSettings.java +34 −3 Original line number Original line Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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 {} Loading @@ -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 Loading Loading @@ -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 = Loading @@ -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()); } } Loading @@ -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 Loading @@ -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(); } } Loading Loading @@ -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(); } } Loading @@ -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(); } } Loading
tests/telephonytests/src/com/android/internal/telephony/dataconnection/DataEnabledOverrideTest.java +7 −6 Original line number Original line Diff line number Diff line Loading @@ -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)); Loading @@ -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)); Loading Loading @@ -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)); Loading Loading @@ -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); Loading