Loading src/java/com/android/internal/telephony/GsmCdmaPhone.java +2 −1 Original line number Diff line number Diff line Loading @@ -3078,7 +3078,8 @@ public class GsmCdmaPhone extends Phone { case EVENT_SET_CARRIER_DATA_ENABLED: ar = (AsyncResult) msg.obj; boolean enabled = (boolean) ar.result; mDataEnabledSettings.setCarrierDataEnabled(enabled); mDataEnabledSettings.setDataEnabled(TelephonyManager.DATA_ENABLED_REASON_CARRIER, enabled); break; case EVENT_DEVICE_PROVISIONED_CHANGE: mDataEnabledSettings.updateProvisionedChanged(); Loading src/java/com/android/internal/telephony/MultiSimSettingController.java +2 −1 Original line number Diff line number Diff line Loading @@ -699,7 +699,8 @@ public class MultiSimSettingController extends Handler { && phone.isUserDataEnabled() && !areSubscriptionsInSameGroup(defaultDataSub, phone.getSubId())) { log("setting data to false on " + phone.getSubId()); phone.getDataEnabledSettings().setUserDataEnabled(false); phone.getDataEnabledSettings().setDataEnabled( TelephonyManager.DATA_ENABLED_REASON_USER, false); } } } Loading src/java/com/android/internal/telephony/dataconnection/DataEnabledSettings.java +78 −6 Original line number Diff line number Diff line Loading @@ -69,7 +69,8 @@ public class DataEnabledSettings { REASON_PROVISIONED_CHANGED, REASON_PROVISIONING_DATA_ENABLED_CHANGED, REASON_OVERRIDE_RULE_CHANGED, REASON_OVERRIDE_CONDITION_CHANGED REASON_OVERRIDE_CONDITION_CHANGED, REASON_THERMAL_DATA_ENABLED }) public @interface DataEnabledChangedReason {} Loading @@ -91,6 +92,8 @@ public class DataEnabledSettings { public static final int REASON_OVERRIDE_CONDITION_CHANGED = 8; public static final int REASON_THERMAL_DATA_ENABLED = 9; /** * responds to the setInternalDataEnabled call - used internally to turn off data. * For example during emergency calls Loading @@ -108,6 +111,15 @@ public class DataEnabledSettings { */ private boolean mCarrierDataEnabled = true; /** * Flag indicating data allowed by Thermal service or not. */ private boolean mThermalDataEnabled = true; /** * Flag indicating whether data is allowed or not for the device. It can be disabled by * user, carrier, policy or thermal */ private boolean mIsDataEnabled = false; private final Phone mPhone; Loading Loading @@ -172,6 +184,7 @@ public class DataEnabledSettings { + ", mPolicyDataEnabled=" + mPolicyDataEnabled + ", mCarrierDataEnabled=" + mCarrierDataEnabled + ", mIsDataEnabled=" + mIsDataEnabled + ", mThermalDataEnabled=" + mThermalDataEnabled + ", " + mDataEnabledOverride + "]"; } Loading Loading @@ -204,7 +217,7 @@ public class DataEnabledSettings { return mInternalDataEnabled; } public synchronized void setUserDataEnabled(boolean enabled) { private synchronized void setUserDataEnabled(boolean enabled) { // By default the change should propagate to the group. setUserDataEnabled(enabled, true); } Loading Loading @@ -233,6 +246,32 @@ public class DataEnabledSettings { } } /** * Policy control of data connection with reason * @param reason the reason the data enable change is taking place * @param enabled True if enabling the data, otherwise disabling. */ public synchronized void setDataEnabled(@TelephonyManager.DataEnabledReason int reason, boolean enabled) { switch (reason) { case TelephonyManager.DATA_ENABLED_REASON_USER: setUserDataEnabled(enabled); break; case TelephonyManager.DATA_ENABLED_REASON_CARRIER: setCarrierDataEnabled(enabled); break; case TelephonyManager.DATA_ENABLED_REASON_POLICY: setPolicyDataEnabled(enabled); break; case TelephonyManager.DATA_ENABLED_REASON_THERMAL: setThermalDataEnabled(enabled); break; default: log("Invalid data enable reason " + reason); break; } } public synchronized boolean isUserDataEnabled() { // User data should always be true for opportunistic subscription. if (isStandAloneOpportunistic(mPhone.getSubId(), mPhone.getContext())) return true; Loading Loading @@ -300,7 +339,7 @@ public class DataEnabledSettings { return mDataEnabledOverride.isDataAllowedInVoiceCall(); } public synchronized void setPolicyDataEnabled(boolean enabled) { private synchronized void setPolicyDataEnabled(boolean enabled) { if (mPolicyDataEnabled != enabled) { localLog("PolicyDataEnabled", enabled); mPolicyDataEnabled = enabled; Loading @@ -312,7 +351,7 @@ public class DataEnabledSettings { return mPolicyDataEnabled; } public synchronized void setCarrierDataEnabled(boolean enabled) { private synchronized void setCarrierDataEnabled(boolean enabled) { if (mCarrierDataEnabled != enabled) { localLog("CarrierDataEnabled", enabled); mCarrierDataEnabled = enabled; Loading @@ -324,6 +363,18 @@ public class DataEnabledSettings { return mCarrierDataEnabled; } private synchronized void setThermalDataEnabled(boolean enabled) { if (mThermalDataEnabled != enabled) { localLog("ThermalDataEnabled", enabled); mThermalDataEnabled = enabled; updateDataEnabledAndNotify(REASON_THERMAL_DATA_ENABLED); } } public synchronized boolean isThermalDataEnabled() { return mThermalDataEnabled; } public synchronized void updateProvisionedChanged() { updateDataEnabledAndNotify(REASON_PROVISIONED_CHANGED); } Loading @@ -336,6 +387,27 @@ public class DataEnabledSettings { return mIsDataEnabled; } /** * Check if data is enabled for a specific reason {@@TelephonyManager.DataEnabledReason} * * @return {@code true} if the overall data is enabled; {@code false} if not. */ public synchronized boolean isDataEnabledWithReason( @TelephonyManager.DataEnabledReason int reason) { switch (reason) { case TelephonyManager.DATA_ENABLED_REASON_USER: return isUserDataEnabled(); case TelephonyManager.DATA_ENABLED_REASON_CARRIER: return isCarrierDataEnabled(); case TelephonyManager.DATA_ENABLED_REASON_POLICY: return isPolicyDataEnabled(); case TelephonyManager.DATA_ENABLED_REASON_THERMAL: return isThermalDataEnabled(); default: return false; } } private synchronized void updateDataEnabledAndNotify(int reason) { boolean prevDataEnabled = mIsDataEnabled; Loading @@ -352,7 +424,7 @@ public class DataEnabledSettings { } else { mIsDataEnabled = mInternalDataEnabled && (isUserDataEnabled() || mDataEnabledOverride .shouldOverrideDataEnabledSettings(mPhone, ApnSetting.TYPE_ALL)) && mPolicyDataEnabled && mCarrierDataEnabled; && mPolicyDataEnabled && mCarrierDataEnabled && mThermalDataEnabled; } } Loading Loading @@ -469,7 +541,7 @@ public class DataEnabledSettings { .shouldOverrideDataEnabledSettings(mPhone, apnType); return (mInternalDataEnabled && mPolicyDataEnabled && mCarrierDataEnabled && (userDataEnabled || isDataEnabledOverridden)); && mThermalDataEnabled && (userDataEnabled || isDataEnabledOverridden)); } } Loading src/java/com/android/internal/telephony/vendor/VendorMultiSimSettingController.java +5 −4 Original line number Diff line number Diff line Loading @@ -18,17 +18,17 @@ package com.android.internal.telephony.vendor; import android.content.Context; import android.provider.Settings; import android.provider.Settings.SettingNotFoundException; import android.telephony.SubscriptionInfo; import android.telephony.TelephonyManager; import android.util.Log; import com.android.internal.telephony.GlobalSettingsHelper; import com.android.internal.telephony.MultiSimSettingController; import com.android.internal.telephony.SubscriptionController; import com.android.internal.telephony.Phone; import com.android.internal.telephony.PhoneFactory; import com.android.internal.telephony.SubscriptionController; import java.util.List; import java.util.stream.Collectors; /* * Extending VendorMultiSimSettingController to override default Loading Loading @@ -90,7 +90,8 @@ public class VendorMultiSimSettingController extends MultiSimSettingController { // For active subscription, call setUserDataEnabled through DataEnabledSettings. Phone phone = PhoneFactory.getPhone(mSubController.getPhoneId(currentSubId)); if (phone != null) { phone.getDataEnabledSettings().setUserDataEnabled(enable); phone.getDataEnabledSettings().setDataEnabled( TelephonyManager.DATA_ENABLED_REASON_USER, enable); } } else { // For inactive subscription, directly write into global settings. Loading tests/telephonytests/src/com/android/internal/telephony/MultiSimSettingControllerTest.java +22 −11 Original line number Diff line number Diff line Loading @@ -313,7 +313,8 @@ public class MultiSimSettingControllerTest extends TelephonyTest { mMultiSimSettingControllerUT.notifyCarrierConfigChanged(0, 1); mMultiSimSettingControllerUT.notifyCarrierConfigChanged(1, 2); processAllMessages(); verify(mDataEnabledSettingsMock2).setUserDataEnabled(false); verify(mDataEnabledSettingsMock2).setDataEnabled( TelephonyManager.DATA_ENABLED_REASON_USER, false); // Enable on non-default sub should trigger setDefaultDataSubId. mMultiSimSettingControllerUT.notifyUserDataEnabled(2, true); Loading @@ -324,7 +325,8 @@ public class MultiSimSettingControllerTest extends TelephonyTest { doReturn(2).when(mSubControllerMock).getDefaultDataSubId(); mMultiSimSettingControllerUT.notifyDefaultDataSubChanged(); processAllMessages(); verify(mDataEnabledSettingsMock1).setUserDataEnabled(false); verify(mDataEnabledSettingsMock1).setDataEnabled( TelephonyManager.DATA_ENABLED_REASON_USER, false); doReturn(1).when(mSubControllerMock).getDefaultDataSubId(); doReturn(1).when(mSubControllerMock).getDefaultSmsSubId(); Loading Loading @@ -391,7 +393,8 @@ public class MultiSimSettingControllerTest extends TelephonyTest { doReturn(1).when(mSubControllerMock).getDefaultDataSubId(); mMultiSimSettingControllerUT.notifyDefaultDataSubChanged(); processAllMessages(); verify(mDataEnabledSettingsMock2).setUserDataEnabled(false); verify(mDataEnabledSettingsMock2).setDataEnabled( TelephonyManager.DATA_ENABLED_REASON_USER, false); mMultiSimSettingControllerUT.notifyUserDataEnabled(2, false); processAllMessages(); assertFalse(GlobalSettingsHelper.getBoolean( Loading Loading @@ -439,7 +442,8 @@ public class MultiSimSettingControllerTest extends TelephonyTest { mMultiSimSettingControllerUT.notifyCarrierConfigChanged(1, 2); processAllMessages(); verify(mSubControllerMock).setDefaultDataSubId(2); verify(mDataEnabledSettingsMock1, never()).setUserDataEnabled(anyBoolean()); verify(mDataEnabledSettingsMock1, never()).setDataEnabled( anyInt(), anyBoolean()); // No user selection needed, no intent should be sent. verify(mContext, never()).sendBroadcast(any()); Loading @@ -456,8 +460,10 @@ public class MultiSimSettingControllerTest extends TelephonyTest { mMultiSimSettingControllerUT.notifyUserDataEnabled(2, true); processAllMessages(); verify(mSubControllerMock, never()).setDefaultDataSubId(anyInt()); verify(mDataEnabledSettingsMock1, never()).setUserDataEnabled(anyBoolean()); verify(mDataEnabledSettingsMock2, never()).setUserDataEnabled(anyBoolean()); verify(mDataEnabledSettingsMock1, never()).setDataEnabled( eq(TelephonyManager.DATA_ENABLED_REASON_USER), anyBoolean()); verify(mDataEnabledSettingsMock2, never()).setDataEnabled( TelephonyManager.DATA_ENABLED_REASON_USER, false); } @Test Loading Loading @@ -551,13 +557,16 @@ public class MultiSimSettingControllerTest extends TelephonyTest { // loaded on both subscriptions. mMultiSimSettingControllerUT.notifyAllSubscriptionLoaded(); processAllMessages(); verify(mDataEnabledSettingsMock2, never()).setUserDataEnabled(false); verify(mDataEnabledSettingsMock2, never()).setDataEnabled( TelephonyManager.DATA_ENABLED_REASON_USER, false); mMultiSimSettingControllerUT.notifyCarrierConfigChanged(0, 1); processAllMessages(); verify(mDataEnabledSettingsMock2, never()).setUserDataEnabled(false); verify(mDataEnabledSettingsMock2, never()).setDataEnabled( TelephonyManager.DATA_ENABLED_REASON_USER, false); mMultiSimSettingControllerUT.notifyCarrierConfigChanged(1, 2); processAllMessages(); verify(mDataEnabledSettingsMock2).setUserDataEnabled(false); verify(mDataEnabledSettingsMock2).setDataEnabled( TelephonyManager.DATA_ENABLED_REASON_USER, false); // Switch from sub 2 to sub 3 in phone[1]. clearInvocations(mSubControllerMock); Loading Loading @@ -639,7 +648,8 @@ public class MultiSimSettingControllerTest extends TelephonyTest { SubscriptionManager.INVALID_SUBSCRIPTION_ID); processAllMessages(); // Nothing should happen as carrier config is not ready for sub 2. verify(mDataEnabledSettingsMock2, never()).setUserDataEnabled(false); verify(mDataEnabledSettingsMock2, never()).setDataEnabled( TelephonyManager.DATA_ENABLED_REASON_USER, false); // Still notify carrier config without specifying subId2, but this time subController // and CarrierConfigManager have subId 2 active and ready. Loading @@ -651,6 +661,7 @@ public class MultiSimSettingControllerTest extends TelephonyTest { SubscriptionManager.INVALID_SUBSCRIPTION_ID); processAllMessages(); // This time user data should be disabled on phone1. verify(mDataEnabledSettingsMock2).setUserDataEnabled(false); verify(mDataEnabledSettingsMock2).setDataEnabled( TelephonyManager.DATA_ENABLED_REASON_USER, false); } } Loading
src/java/com/android/internal/telephony/GsmCdmaPhone.java +2 −1 Original line number Diff line number Diff line Loading @@ -3078,7 +3078,8 @@ public class GsmCdmaPhone extends Phone { case EVENT_SET_CARRIER_DATA_ENABLED: ar = (AsyncResult) msg.obj; boolean enabled = (boolean) ar.result; mDataEnabledSettings.setCarrierDataEnabled(enabled); mDataEnabledSettings.setDataEnabled(TelephonyManager.DATA_ENABLED_REASON_CARRIER, enabled); break; case EVENT_DEVICE_PROVISIONED_CHANGE: mDataEnabledSettings.updateProvisionedChanged(); Loading
src/java/com/android/internal/telephony/MultiSimSettingController.java +2 −1 Original line number Diff line number Diff line Loading @@ -699,7 +699,8 @@ public class MultiSimSettingController extends Handler { && phone.isUserDataEnabled() && !areSubscriptionsInSameGroup(defaultDataSub, phone.getSubId())) { log("setting data to false on " + phone.getSubId()); phone.getDataEnabledSettings().setUserDataEnabled(false); phone.getDataEnabledSettings().setDataEnabled( TelephonyManager.DATA_ENABLED_REASON_USER, false); } } } Loading
src/java/com/android/internal/telephony/dataconnection/DataEnabledSettings.java +78 −6 Original line number Diff line number Diff line Loading @@ -69,7 +69,8 @@ public class DataEnabledSettings { REASON_PROVISIONED_CHANGED, REASON_PROVISIONING_DATA_ENABLED_CHANGED, REASON_OVERRIDE_RULE_CHANGED, REASON_OVERRIDE_CONDITION_CHANGED REASON_OVERRIDE_CONDITION_CHANGED, REASON_THERMAL_DATA_ENABLED }) public @interface DataEnabledChangedReason {} Loading @@ -91,6 +92,8 @@ public class DataEnabledSettings { public static final int REASON_OVERRIDE_CONDITION_CHANGED = 8; public static final int REASON_THERMAL_DATA_ENABLED = 9; /** * responds to the setInternalDataEnabled call - used internally to turn off data. * For example during emergency calls Loading @@ -108,6 +111,15 @@ public class DataEnabledSettings { */ private boolean mCarrierDataEnabled = true; /** * Flag indicating data allowed by Thermal service or not. */ private boolean mThermalDataEnabled = true; /** * Flag indicating whether data is allowed or not for the device. It can be disabled by * user, carrier, policy or thermal */ private boolean mIsDataEnabled = false; private final Phone mPhone; Loading Loading @@ -172,6 +184,7 @@ public class DataEnabledSettings { + ", mPolicyDataEnabled=" + mPolicyDataEnabled + ", mCarrierDataEnabled=" + mCarrierDataEnabled + ", mIsDataEnabled=" + mIsDataEnabled + ", mThermalDataEnabled=" + mThermalDataEnabled + ", " + mDataEnabledOverride + "]"; } Loading Loading @@ -204,7 +217,7 @@ public class DataEnabledSettings { return mInternalDataEnabled; } public synchronized void setUserDataEnabled(boolean enabled) { private synchronized void setUserDataEnabled(boolean enabled) { // By default the change should propagate to the group. setUserDataEnabled(enabled, true); } Loading Loading @@ -233,6 +246,32 @@ public class DataEnabledSettings { } } /** * Policy control of data connection with reason * @param reason the reason the data enable change is taking place * @param enabled True if enabling the data, otherwise disabling. */ public synchronized void setDataEnabled(@TelephonyManager.DataEnabledReason int reason, boolean enabled) { switch (reason) { case TelephonyManager.DATA_ENABLED_REASON_USER: setUserDataEnabled(enabled); break; case TelephonyManager.DATA_ENABLED_REASON_CARRIER: setCarrierDataEnabled(enabled); break; case TelephonyManager.DATA_ENABLED_REASON_POLICY: setPolicyDataEnabled(enabled); break; case TelephonyManager.DATA_ENABLED_REASON_THERMAL: setThermalDataEnabled(enabled); break; default: log("Invalid data enable reason " + reason); break; } } public synchronized boolean isUserDataEnabled() { // User data should always be true for opportunistic subscription. if (isStandAloneOpportunistic(mPhone.getSubId(), mPhone.getContext())) return true; Loading Loading @@ -300,7 +339,7 @@ public class DataEnabledSettings { return mDataEnabledOverride.isDataAllowedInVoiceCall(); } public synchronized void setPolicyDataEnabled(boolean enabled) { private synchronized void setPolicyDataEnabled(boolean enabled) { if (mPolicyDataEnabled != enabled) { localLog("PolicyDataEnabled", enabled); mPolicyDataEnabled = enabled; Loading @@ -312,7 +351,7 @@ public class DataEnabledSettings { return mPolicyDataEnabled; } public synchronized void setCarrierDataEnabled(boolean enabled) { private synchronized void setCarrierDataEnabled(boolean enabled) { if (mCarrierDataEnabled != enabled) { localLog("CarrierDataEnabled", enabled); mCarrierDataEnabled = enabled; Loading @@ -324,6 +363,18 @@ public class DataEnabledSettings { return mCarrierDataEnabled; } private synchronized void setThermalDataEnabled(boolean enabled) { if (mThermalDataEnabled != enabled) { localLog("ThermalDataEnabled", enabled); mThermalDataEnabled = enabled; updateDataEnabledAndNotify(REASON_THERMAL_DATA_ENABLED); } } public synchronized boolean isThermalDataEnabled() { return mThermalDataEnabled; } public synchronized void updateProvisionedChanged() { updateDataEnabledAndNotify(REASON_PROVISIONED_CHANGED); } Loading @@ -336,6 +387,27 @@ public class DataEnabledSettings { return mIsDataEnabled; } /** * Check if data is enabled for a specific reason {@@TelephonyManager.DataEnabledReason} * * @return {@code true} if the overall data is enabled; {@code false} if not. */ public synchronized boolean isDataEnabledWithReason( @TelephonyManager.DataEnabledReason int reason) { switch (reason) { case TelephonyManager.DATA_ENABLED_REASON_USER: return isUserDataEnabled(); case TelephonyManager.DATA_ENABLED_REASON_CARRIER: return isCarrierDataEnabled(); case TelephonyManager.DATA_ENABLED_REASON_POLICY: return isPolicyDataEnabled(); case TelephonyManager.DATA_ENABLED_REASON_THERMAL: return isThermalDataEnabled(); default: return false; } } private synchronized void updateDataEnabledAndNotify(int reason) { boolean prevDataEnabled = mIsDataEnabled; Loading @@ -352,7 +424,7 @@ public class DataEnabledSettings { } else { mIsDataEnabled = mInternalDataEnabled && (isUserDataEnabled() || mDataEnabledOverride .shouldOverrideDataEnabledSettings(mPhone, ApnSetting.TYPE_ALL)) && mPolicyDataEnabled && mCarrierDataEnabled; && mPolicyDataEnabled && mCarrierDataEnabled && mThermalDataEnabled; } } Loading Loading @@ -469,7 +541,7 @@ public class DataEnabledSettings { .shouldOverrideDataEnabledSettings(mPhone, apnType); return (mInternalDataEnabled && mPolicyDataEnabled && mCarrierDataEnabled && (userDataEnabled || isDataEnabledOverridden)); && mThermalDataEnabled && (userDataEnabled || isDataEnabledOverridden)); } } Loading
src/java/com/android/internal/telephony/vendor/VendorMultiSimSettingController.java +5 −4 Original line number Diff line number Diff line Loading @@ -18,17 +18,17 @@ package com.android.internal.telephony.vendor; import android.content.Context; import android.provider.Settings; import android.provider.Settings.SettingNotFoundException; import android.telephony.SubscriptionInfo; import android.telephony.TelephonyManager; import android.util.Log; import com.android.internal.telephony.GlobalSettingsHelper; import com.android.internal.telephony.MultiSimSettingController; import com.android.internal.telephony.SubscriptionController; import com.android.internal.telephony.Phone; import com.android.internal.telephony.PhoneFactory; import com.android.internal.telephony.SubscriptionController; import java.util.List; import java.util.stream.Collectors; /* * Extending VendorMultiSimSettingController to override default Loading Loading @@ -90,7 +90,8 @@ public class VendorMultiSimSettingController extends MultiSimSettingController { // For active subscription, call setUserDataEnabled through DataEnabledSettings. Phone phone = PhoneFactory.getPhone(mSubController.getPhoneId(currentSubId)); if (phone != null) { phone.getDataEnabledSettings().setUserDataEnabled(enable); phone.getDataEnabledSettings().setDataEnabled( TelephonyManager.DATA_ENABLED_REASON_USER, enable); } } else { // For inactive subscription, directly write into global settings. Loading
tests/telephonytests/src/com/android/internal/telephony/MultiSimSettingControllerTest.java +22 −11 Original line number Diff line number Diff line Loading @@ -313,7 +313,8 @@ public class MultiSimSettingControllerTest extends TelephonyTest { mMultiSimSettingControllerUT.notifyCarrierConfigChanged(0, 1); mMultiSimSettingControllerUT.notifyCarrierConfigChanged(1, 2); processAllMessages(); verify(mDataEnabledSettingsMock2).setUserDataEnabled(false); verify(mDataEnabledSettingsMock2).setDataEnabled( TelephonyManager.DATA_ENABLED_REASON_USER, false); // Enable on non-default sub should trigger setDefaultDataSubId. mMultiSimSettingControllerUT.notifyUserDataEnabled(2, true); Loading @@ -324,7 +325,8 @@ public class MultiSimSettingControllerTest extends TelephonyTest { doReturn(2).when(mSubControllerMock).getDefaultDataSubId(); mMultiSimSettingControllerUT.notifyDefaultDataSubChanged(); processAllMessages(); verify(mDataEnabledSettingsMock1).setUserDataEnabled(false); verify(mDataEnabledSettingsMock1).setDataEnabled( TelephonyManager.DATA_ENABLED_REASON_USER, false); doReturn(1).when(mSubControllerMock).getDefaultDataSubId(); doReturn(1).when(mSubControllerMock).getDefaultSmsSubId(); Loading Loading @@ -391,7 +393,8 @@ public class MultiSimSettingControllerTest extends TelephonyTest { doReturn(1).when(mSubControllerMock).getDefaultDataSubId(); mMultiSimSettingControllerUT.notifyDefaultDataSubChanged(); processAllMessages(); verify(mDataEnabledSettingsMock2).setUserDataEnabled(false); verify(mDataEnabledSettingsMock2).setDataEnabled( TelephonyManager.DATA_ENABLED_REASON_USER, false); mMultiSimSettingControllerUT.notifyUserDataEnabled(2, false); processAllMessages(); assertFalse(GlobalSettingsHelper.getBoolean( Loading Loading @@ -439,7 +442,8 @@ public class MultiSimSettingControllerTest extends TelephonyTest { mMultiSimSettingControllerUT.notifyCarrierConfigChanged(1, 2); processAllMessages(); verify(mSubControllerMock).setDefaultDataSubId(2); verify(mDataEnabledSettingsMock1, never()).setUserDataEnabled(anyBoolean()); verify(mDataEnabledSettingsMock1, never()).setDataEnabled( anyInt(), anyBoolean()); // No user selection needed, no intent should be sent. verify(mContext, never()).sendBroadcast(any()); Loading @@ -456,8 +460,10 @@ public class MultiSimSettingControllerTest extends TelephonyTest { mMultiSimSettingControllerUT.notifyUserDataEnabled(2, true); processAllMessages(); verify(mSubControllerMock, never()).setDefaultDataSubId(anyInt()); verify(mDataEnabledSettingsMock1, never()).setUserDataEnabled(anyBoolean()); verify(mDataEnabledSettingsMock2, never()).setUserDataEnabled(anyBoolean()); verify(mDataEnabledSettingsMock1, never()).setDataEnabled( eq(TelephonyManager.DATA_ENABLED_REASON_USER), anyBoolean()); verify(mDataEnabledSettingsMock2, never()).setDataEnabled( TelephonyManager.DATA_ENABLED_REASON_USER, false); } @Test Loading Loading @@ -551,13 +557,16 @@ public class MultiSimSettingControllerTest extends TelephonyTest { // loaded on both subscriptions. mMultiSimSettingControllerUT.notifyAllSubscriptionLoaded(); processAllMessages(); verify(mDataEnabledSettingsMock2, never()).setUserDataEnabled(false); verify(mDataEnabledSettingsMock2, never()).setDataEnabled( TelephonyManager.DATA_ENABLED_REASON_USER, false); mMultiSimSettingControllerUT.notifyCarrierConfigChanged(0, 1); processAllMessages(); verify(mDataEnabledSettingsMock2, never()).setUserDataEnabled(false); verify(mDataEnabledSettingsMock2, never()).setDataEnabled( TelephonyManager.DATA_ENABLED_REASON_USER, false); mMultiSimSettingControllerUT.notifyCarrierConfigChanged(1, 2); processAllMessages(); verify(mDataEnabledSettingsMock2).setUserDataEnabled(false); verify(mDataEnabledSettingsMock2).setDataEnabled( TelephonyManager.DATA_ENABLED_REASON_USER, false); // Switch from sub 2 to sub 3 in phone[1]. clearInvocations(mSubControllerMock); Loading Loading @@ -639,7 +648,8 @@ public class MultiSimSettingControllerTest extends TelephonyTest { SubscriptionManager.INVALID_SUBSCRIPTION_ID); processAllMessages(); // Nothing should happen as carrier config is not ready for sub 2. verify(mDataEnabledSettingsMock2, never()).setUserDataEnabled(false); verify(mDataEnabledSettingsMock2, never()).setDataEnabled( TelephonyManager.DATA_ENABLED_REASON_USER, false); // Still notify carrier config without specifying subId2, but this time subController // and CarrierConfigManager have subId 2 active and ready. Loading @@ -651,6 +661,7 @@ public class MultiSimSettingControllerTest extends TelephonyTest { SubscriptionManager.INVALID_SUBSCRIPTION_ID); processAllMessages(); // This time user data should be disabled on phone1. verify(mDataEnabledSettingsMock2).setUserDataEnabled(false); verify(mDataEnabledSettingsMock2).setDataEnabled( TelephonyManager.DATA_ENABLED_REASON_USER, false); } }