Loading src/java/com/android/internal/telephony/MultiSimSettingController.java +7 −14 Original line number Diff line number Diff line Loading @@ -181,8 +181,7 @@ public class MultiSimSettingController extends Handler { * If user is enabling a non-default non-opportunistic subscription, make it default * data subscription. */ @VisibleForTesting public void onUserDataEnabled(int subId, boolean enable) { private void onUserDataEnabled(int subId, boolean enable) { if (DBG) log("onUserDataEnabled"); // Make sure MOBILE_DATA of subscriptions in same group are synced. setUserDataEnabledForGroup(subId, enable); Loading @@ -197,8 +196,7 @@ public class MultiSimSettingController extends Handler { /** * Make sure DATA_ROAMING of subscriptions in same group are synced. */ @VisibleForTesting public void onRoamingDataEnabled(int subId, boolean enable) { private void onRoamingDataEnabled(int subId, boolean enable) { if (DBG) log("onRoamingDataEnabled"); setRoamingDataEnabledForGroup(subId, enable); Loading @@ -210,8 +208,7 @@ public class MultiSimSettingController extends Handler { * Upon initialization, update defaults and mobile data enabling. * Should only be triggered once. */ @VisibleForTesting public void onAllSubscriptionsLoaded() { private void onAllSubscriptionsLoaded() { if (DBG) log("onAllSubscriptionsLoaded"); updateDefaults(); disableDataForNonDefaultNonOpportunisticSubscriptions(); Loading @@ -222,8 +219,7 @@ public class MultiSimSettingController extends Handler { * * Make sure non-default non-opportunistic subscriptions has data off. */ @VisibleForTesting public void onSubscriptionsChanged() { private void onSubscriptionsChanged() { if (DBG) log("onSubscriptionsChanged"); if (!SubscriptionInfoUpdater.isSubInfoInitialized()) return; updateDefaults(); Loading @@ -233,8 +229,7 @@ public class MultiSimSettingController extends Handler { /** * Make sure non-default non-opportunistic subscriptions has data disabled. */ @VisibleForTesting public void onDefaultDataSettingChanged() { private void onDefaultDataSettingChanged() { if (DBG) log("onDefaultDataSettingChanged"); disableDataForNonDefaultNonOpportunisticSubscriptions(); } Loading @@ -245,8 +240,7 @@ public class MultiSimSettingController extends Handler { * TODO: b/130258159 have a separate database table for grouped subscriptions so we don't * manually sync each setting. */ @VisibleForTesting public void onSubscriptionGroupChanged(ParcelUuid groupUuid) { private void onSubscriptionGroupChanged(ParcelUuid groupUuid) { if (DBG) log("onSubscriptionGroupChanged"); List<SubscriptionInfo> infoList = mSubController.getSubscriptionsInGroup( Loading Loading @@ -306,8 +300,7 @@ public class MultiSimSettingController extends Handler { * not a user settable value anymore. * 4) If non above is met, clear the default value to INVALID. */ @VisibleForTesting public void updateDefaults() { private void updateDefaults() { if (DBG) log("updateDefaults"); if (!SubscriptionInfoUpdater.isSubInfoInitialized()) return; Loading src/java/com/android/internal/telephony/SubscriptionInfoUpdater.java +1 −1 Original line number Diff line number Diff line Loading @@ -912,7 +912,7 @@ public class SubscriptionInfoUpdater extends Handler { .getUriForSubscriptionId(currentSubId), cv, null, null) > 0) { sc.refreshCachedActiveSubscriptionInfoList(); sc.notifySubscriptionInfoChanged(); MultiSimSettingController.getInstance().onSubscriptionGroupChanged(groupUuid); MultiSimSettingController.getInstance().notifySubscriptionGroupChanged(groupUuid); } } Loading tests/telephonytests/src/com/android/internal/telephony/MultiSimSettingControllerTest.java +54 −18 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import android.os.HandlerThread; import android.os.ParcelUuid; import android.provider.Settings; import android.telephony.SubscriptionInfo; Loading Loading @@ -60,6 +61,7 @@ public class MultiSimSettingControllerTest extends TelephonyTest { private DataEnabledSettings mDataEnabledSettingsMock1; @Mock private DataEnabledSettings mDataEnabledSettingsMock2; private HandlerThread mHandlerThread; private Phone[] mPhones; ParcelUuid mGroupUuid1 = new ParcelUuid(UUID.randomUUID()); Loading Loading @@ -123,30 +125,50 @@ public class MultiSimSettingControllerTest extends TelephonyTest { replaceInstance(PhoneFactory.class, "sPhones", null, mPhones); replaceInstance(SubscriptionController.class, "sInstance", null, mSubControllerMock); mMultiSimSettingControllerUT = new MultiSimSettingController(mContext, mSubControllerMock); mHandlerThread = new HandlerThread("MultiSimSettingControllerTestThread") { @Override public void onLooperPrepared() { mMultiSimSettingControllerUT = new MultiSimSettingController( mContext, mSubControllerMock); } }; mHandlerThread.start(); waitABit(); } @After public void tearDown() throws Exception { mHandlerThread.quit(); super.tearDown(); } private void waitABit() { try { Thread.sleep(250); } catch (Exception e) { } } @Test @SmallTest public void testSimpleDsds() { doReturn(true).when(mPhoneMock1).isUserDataEnabled(); doReturn(true).when(mPhoneMock2).isUserDataEnabled(); // After initialization, sub 2 should have mobile data off. mMultiSimSettingControllerUT.onAllSubscriptionsLoaded(); mMultiSimSettingControllerUT.notifyAllSubscriptionLoaded(); waitABit(); verify(mDataEnabledSettingsMock2).setUserDataEnabled(false); // Enable on non-default sub should trigger setDefaultDataSubId. mMultiSimSettingControllerUT.onUserDataEnabled(2, true); mMultiSimSettingControllerUT.notifyUserDataEnabled(2, true); waitABit(); verify(mSubControllerMock).setDefaultDataSubId(2); // Changing default data to sub 2 should trigger disabling data on sub 1. doReturn(2).when(mSubControllerMock).getDefaultDataSubId(); mMultiSimSettingControllerUT.onDefaultDataSettingChanged(); mMultiSimSettingControllerUT.notifyDefaultDataSubChanged(); waitABit(); verify(mDataEnabledSettingsMock1).setUserDataEnabled(false); doReturn(1).when(mSubControllerMock).getDefaultDataSubId(); Loading @@ -157,7 +179,8 @@ public class MultiSimSettingControllerTest extends TelephonyTest { clearInvocations(mSubControllerMock); List<SubscriptionInfo> infoList = Arrays.asList(mSubInfo2); doReturn(infoList).when(mSubControllerMock).getActiveSubscriptionInfoList(anyString()); mMultiSimSettingControllerUT.updateDefaults(); mMultiSimSettingControllerUT.notifySubscriptionInfoChanged(); waitABit(); verify(mSubControllerMock).setDefaultDataSubId(SubscriptionManager.INVALID_SUBSCRIPTION_ID); verify(mSubControllerMock).setDefaultSmsSubId(SubscriptionManager.INVALID_SUBSCRIPTION_ID); verify(mSubControllerMock, never()).setDefaultVoiceSubId(anyInt()); Loading @@ -171,12 +194,14 @@ public class MultiSimSettingControllerTest extends TelephonyTest { doReturn(true).when(mPhoneMock2).isUserDataEnabled(); GlobalSettingsHelper.setBoolean(mContext, Settings.Global.MOBILE_DATA, 2, true); GlobalSettingsHelper.setBoolean(mContext, Settings.Global.DATA_ROAMING, 2, false); mMultiSimSettingControllerUT.onAllSubscriptionsLoaded(); mMultiSimSettingControllerUT.notifyAllSubscriptionLoaded(); waitABit(); // Create subscription grouping. doReturn(Arrays.asList(mSubInfo2, mSubInfo3, mSubInfo4)).when(mSubControllerMock) .getSubscriptionsInGroup(any(), anyString()); mMultiSimSettingControllerUT.onSubscriptionGroupChanged(mGroupUuid1); mMultiSimSettingControllerUT.notifySubscriptionGroupChanged(mGroupUuid1); waitABit(); // This should result in setting sync. assertTrue(GlobalSettingsHelper.getBoolean( mContext, Settings.Global.MOBILE_DATA, 3, false)); Loading @@ -190,9 +215,11 @@ public class MultiSimSettingControllerTest extends TelephonyTest { // Making sub 1 default data sub should result in disabling data on sub 2, 3, 4. doReturn(1).when(mSubControllerMock).getDefaultDataSubId(); mMultiSimSettingControllerUT.onDefaultDataSettingChanged(); mMultiSimSettingControllerUT.notifyDefaultDataSubChanged(); waitABit(); verify(mDataEnabledSettingsMock2).setUserDataEnabled(false); mMultiSimSettingControllerUT.onUserDataEnabled(2, false); mMultiSimSettingControllerUT.notifyUserDataEnabled(2, false); waitABit(); assertFalse(GlobalSettingsHelper.getBoolean( mContext, Settings.Global.MOBILE_DATA, 3, true)); assertFalse(GlobalSettingsHelper.getBoolean( Loading @@ -207,7 +234,10 @@ public class MultiSimSettingControllerTest extends TelephonyTest { List<SubscriptionInfo> infoList = Arrays.asList(mSubInfo1, mSubInfo3); doReturn(mGroupUuid1).when(mSubControllerMock).getGroupUuid(2); doReturn(infoList).when(mSubControllerMock).getActiveSubscriptionInfoList(anyString()); mMultiSimSettingControllerUT.updateDefaults(); mMultiSimSettingControllerUT.notifySubscriptionInfoChanged(); waitABit(); verify(mSubControllerMock).setDefaultDataSubId(3); verify(mSubControllerMock).setDefaultSmsSubId(3); verify(mSubControllerMock, never()).setDefaultVoiceSubId(anyInt()); Loading @@ -224,7 +254,8 @@ public class MultiSimSettingControllerTest extends TelephonyTest { // Notify subscriptions ready. Sub 2 should become the default. But shouldn't turn off // data of oppt sub 1. mMultiSimSettingControllerUT.onAllSubscriptionsLoaded(); mMultiSimSettingControllerUT.notifyAllSubscriptionLoaded(); waitABit(); verify(mSubControllerMock).setDefaultDataSubId(2); verify(mDataEnabledSettingsMock1, never()).setUserDataEnabled(anyBoolean()); Loading @@ -233,11 +264,13 @@ public class MultiSimSettingControllerTest extends TelephonyTest { clearInvocations(mDataEnabledSettingsMock2); doReturn(2).when(mSubControllerMock).getDefaultDataSubId(); // Toggle data on sub 1 or sub 2. Nothing should happen as they are independent. mMultiSimSettingControllerUT.onUserDataEnabled(1, false); mMultiSimSettingControllerUT.onUserDataEnabled(1, true); mMultiSimSettingControllerUT.notifyUserDataEnabled(1, false); mMultiSimSettingControllerUT.notifyUserDataEnabled(1, true); waitABit(); verify(mSubControllerMock, never()).setDefaultDataSubId(anyInt()); mMultiSimSettingControllerUT.onUserDataEnabled(2, false); mMultiSimSettingControllerUT.onUserDataEnabled(2, true); mMultiSimSettingControllerUT.notifyUserDataEnabled(2, false); mMultiSimSettingControllerUT.notifyUserDataEnabled(2, true); waitABit(); verify(mSubControllerMock, never()).setDefaultDataSubId(anyInt()); verify(mDataEnabledSettingsMock1, never()).setUserDataEnabled(anyBoolean()); verify(mDataEnabledSettingsMock2, never()).setUserDataEnabled(anyBoolean()); Loading @@ -256,7 +289,8 @@ public class MultiSimSettingControllerTest extends TelephonyTest { GlobalSettingsHelper.setBoolean(mContext, Settings.Global.DATA_ROAMING, 2, false); // Notify subscriptions ready. Sub 2 should become the default, as sub 1 is opportunistic. mMultiSimSettingControllerUT.onAllSubscriptionsLoaded(); mMultiSimSettingControllerUT.notifyAllSubscriptionLoaded(); waitABit(); verify(mSubControllerMock).setDefaultDataSubId(2); // Mark sub 2 as data off. Loading @@ -265,7 +299,8 @@ public class MultiSimSettingControllerTest extends TelephonyTest { // Group sub 1 with sub 2. doReturn(Arrays.asList(mSubInfo1, mSubInfo2)).when(mSubControllerMock) .getSubscriptionsInGroup(any(), anyString()); mMultiSimSettingControllerUT.onSubscriptionGroupChanged(mGroupUuid1); mMultiSimSettingControllerUT.notifySubscriptionGroupChanged(mGroupUuid1); waitABit(); // This should result in setting sync. verify(mDataEnabledSettingsMock1).setUserDataEnabled(false); assertFalse(GlobalSettingsHelper.getBoolean( Loading @@ -274,7 +309,8 @@ public class MultiSimSettingControllerTest extends TelephonyTest { doReturn(false).when(mPhoneMock1).isUserDataEnabled(); doReturn(false).when(mPhoneMock2).isUserDataEnabled(); // Turning data on on sub 2. Sub 1 should also be turned on. mMultiSimSettingControllerUT.onUserDataEnabled(2, true); mMultiSimSettingControllerUT.notifyUserDataEnabled(2, true); waitABit(); verify(mDataEnabledSettingsMock1).setUserDataEnabled(true); } } Loading
src/java/com/android/internal/telephony/MultiSimSettingController.java +7 −14 Original line number Diff line number Diff line Loading @@ -181,8 +181,7 @@ public class MultiSimSettingController extends Handler { * If user is enabling a non-default non-opportunistic subscription, make it default * data subscription. */ @VisibleForTesting public void onUserDataEnabled(int subId, boolean enable) { private void onUserDataEnabled(int subId, boolean enable) { if (DBG) log("onUserDataEnabled"); // Make sure MOBILE_DATA of subscriptions in same group are synced. setUserDataEnabledForGroup(subId, enable); Loading @@ -197,8 +196,7 @@ public class MultiSimSettingController extends Handler { /** * Make sure DATA_ROAMING of subscriptions in same group are synced. */ @VisibleForTesting public void onRoamingDataEnabled(int subId, boolean enable) { private void onRoamingDataEnabled(int subId, boolean enable) { if (DBG) log("onRoamingDataEnabled"); setRoamingDataEnabledForGroup(subId, enable); Loading @@ -210,8 +208,7 @@ public class MultiSimSettingController extends Handler { * Upon initialization, update defaults and mobile data enabling. * Should only be triggered once. */ @VisibleForTesting public void onAllSubscriptionsLoaded() { private void onAllSubscriptionsLoaded() { if (DBG) log("onAllSubscriptionsLoaded"); updateDefaults(); disableDataForNonDefaultNonOpportunisticSubscriptions(); Loading @@ -222,8 +219,7 @@ public class MultiSimSettingController extends Handler { * * Make sure non-default non-opportunistic subscriptions has data off. */ @VisibleForTesting public void onSubscriptionsChanged() { private void onSubscriptionsChanged() { if (DBG) log("onSubscriptionsChanged"); if (!SubscriptionInfoUpdater.isSubInfoInitialized()) return; updateDefaults(); Loading @@ -233,8 +229,7 @@ public class MultiSimSettingController extends Handler { /** * Make sure non-default non-opportunistic subscriptions has data disabled. */ @VisibleForTesting public void onDefaultDataSettingChanged() { private void onDefaultDataSettingChanged() { if (DBG) log("onDefaultDataSettingChanged"); disableDataForNonDefaultNonOpportunisticSubscriptions(); } Loading @@ -245,8 +240,7 @@ public class MultiSimSettingController extends Handler { * TODO: b/130258159 have a separate database table for grouped subscriptions so we don't * manually sync each setting. */ @VisibleForTesting public void onSubscriptionGroupChanged(ParcelUuid groupUuid) { private void onSubscriptionGroupChanged(ParcelUuid groupUuid) { if (DBG) log("onSubscriptionGroupChanged"); List<SubscriptionInfo> infoList = mSubController.getSubscriptionsInGroup( Loading Loading @@ -306,8 +300,7 @@ public class MultiSimSettingController extends Handler { * not a user settable value anymore. * 4) If non above is met, clear the default value to INVALID. */ @VisibleForTesting public void updateDefaults() { private void updateDefaults() { if (DBG) log("updateDefaults"); if (!SubscriptionInfoUpdater.isSubInfoInitialized()) return; Loading
src/java/com/android/internal/telephony/SubscriptionInfoUpdater.java +1 −1 Original line number Diff line number Diff line Loading @@ -912,7 +912,7 @@ public class SubscriptionInfoUpdater extends Handler { .getUriForSubscriptionId(currentSubId), cv, null, null) > 0) { sc.refreshCachedActiveSubscriptionInfoList(); sc.notifySubscriptionInfoChanged(); MultiSimSettingController.getInstance().onSubscriptionGroupChanged(groupUuid); MultiSimSettingController.getInstance().notifySubscriptionGroupChanged(groupUuid); } } Loading
tests/telephonytests/src/com/android/internal/telephony/MultiSimSettingControllerTest.java +54 −18 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import android.os.HandlerThread; import android.os.ParcelUuid; import android.provider.Settings; import android.telephony.SubscriptionInfo; Loading Loading @@ -60,6 +61,7 @@ public class MultiSimSettingControllerTest extends TelephonyTest { private DataEnabledSettings mDataEnabledSettingsMock1; @Mock private DataEnabledSettings mDataEnabledSettingsMock2; private HandlerThread mHandlerThread; private Phone[] mPhones; ParcelUuid mGroupUuid1 = new ParcelUuid(UUID.randomUUID()); Loading Loading @@ -123,30 +125,50 @@ public class MultiSimSettingControllerTest extends TelephonyTest { replaceInstance(PhoneFactory.class, "sPhones", null, mPhones); replaceInstance(SubscriptionController.class, "sInstance", null, mSubControllerMock); mMultiSimSettingControllerUT = new MultiSimSettingController(mContext, mSubControllerMock); mHandlerThread = new HandlerThread("MultiSimSettingControllerTestThread") { @Override public void onLooperPrepared() { mMultiSimSettingControllerUT = new MultiSimSettingController( mContext, mSubControllerMock); } }; mHandlerThread.start(); waitABit(); } @After public void tearDown() throws Exception { mHandlerThread.quit(); super.tearDown(); } private void waitABit() { try { Thread.sleep(250); } catch (Exception e) { } } @Test @SmallTest public void testSimpleDsds() { doReturn(true).when(mPhoneMock1).isUserDataEnabled(); doReturn(true).when(mPhoneMock2).isUserDataEnabled(); // After initialization, sub 2 should have mobile data off. mMultiSimSettingControllerUT.onAllSubscriptionsLoaded(); mMultiSimSettingControllerUT.notifyAllSubscriptionLoaded(); waitABit(); verify(mDataEnabledSettingsMock2).setUserDataEnabled(false); // Enable on non-default sub should trigger setDefaultDataSubId. mMultiSimSettingControllerUT.onUserDataEnabled(2, true); mMultiSimSettingControllerUT.notifyUserDataEnabled(2, true); waitABit(); verify(mSubControllerMock).setDefaultDataSubId(2); // Changing default data to sub 2 should trigger disabling data on sub 1. doReturn(2).when(mSubControllerMock).getDefaultDataSubId(); mMultiSimSettingControllerUT.onDefaultDataSettingChanged(); mMultiSimSettingControllerUT.notifyDefaultDataSubChanged(); waitABit(); verify(mDataEnabledSettingsMock1).setUserDataEnabled(false); doReturn(1).when(mSubControllerMock).getDefaultDataSubId(); Loading @@ -157,7 +179,8 @@ public class MultiSimSettingControllerTest extends TelephonyTest { clearInvocations(mSubControllerMock); List<SubscriptionInfo> infoList = Arrays.asList(mSubInfo2); doReturn(infoList).when(mSubControllerMock).getActiveSubscriptionInfoList(anyString()); mMultiSimSettingControllerUT.updateDefaults(); mMultiSimSettingControllerUT.notifySubscriptionInfoChanged(); waitABit(); verify(mSubControllerMock).setDefaultDataSubId(SubscriptionManager.INVALID_SUBSCRIPTION_ID); verify(mSubControllerMock).setDefaultSmsSubId(SubscriptionManager.INVALID_SUBSCRIPTION_ID); verify(mSubControllerMock, never()).setDefaultVoiceSubId(anyInt()); Loading @@ -171,12 +194,14 @@ public class MultiSimSettingControllerTest extends TelephonyTest { doReturn(true).when(mPhoneMock2).isUserDataEnabled(); GlobalSettingsHelper.setBoolean(mContext, Settings.Global.MOBILE_DATA, 2, true); GlobalSettingsHelper.setBoolean(mContext, Settings.Global.DATA_ROAMING, 2, false); mMultiSimSettingControllerUT.onAllSubscriptionsLoaded(); mMultiSimSettingControllerUT.notifyAllSubscriptionLoaded(); waitABit(); // Create subscription grouping. doReturn(Arrays.asList(mSubInfo2, mSubInfo3, mSubInfo4)).when(mSubControllerMock) .getSubscriptionsInGroup(any(), anyString()); mMultiSimSettingControllerUT.onSubscriptionGroupChanged(mGroupUuid1); mMultiSimSettingControllerUT.notifySubscriptionGroupChanged(mGroupUuid1); waitABit(); // This should result in setting sync. assertTrue(GlobalSettingsHelper.getBoolean( mContext, Settings.Global.MOBILE_DATA, 3, false)); Loading @@ -190,9 +215,11 @@ public class MultiSimSettingControllerTest extends TelephonyTest { // Making sub 1 default data sub should result in disabling data on sub 2, 3, 4. doReturn(1).when(mSubControllerMock).getDefaultDataSubId(); mMultiSimSettingControllerUT.onDefaultDataSettingChanged(); mMultiSimSettingControllerUT.notifyDefaultDataSubChanged(); waitABit(); verify(mDataEnabledSettingsMock2).setUserDataEnabled(false); mMultiSimSettingControllerUT.onUserDataEnabled(2, false); mMultiSimSettingControllerUT.notifyUserDataEnabled(2, false); waitABit(); assertFalse(GlobalSettingsHelper.getBoolean( mContext, Settings.Global.MOBILE_DATA, 3, true)); assertFalse(GlobalSettingsHelper.getBoolean( Loading @@ -207,7 +234,10 @@ public class MultiSimSettingControllerTest extends TelephonyTest { List<SubscriptionInfo> infoList = Arrays.asList(mSubInfo1, mSubInfo3); doReturn(mGroupUuid1).when(mSubControllerMock).getGroupUuid(2); doReturn(infoList).when(mSubControllerMock).getActiveSubscriptionInfoList(anyString()); mMultiSimSettingControllerUT.updateDefaults(); mMultiSimSettingControllerUT.notifySubscriptionInfoChanged(); waitABit(); verify(mSubControllerMock).setDefaultDataSubId(3); verify(mSubControllerMock).setDefaultSmsSubId(3); verify(mSubControllerMock, never()).setDefaultVoiceSubId(anyInt()); Loading @@ -224,7 +254,8 @@ public class MultiSimSettingControllerTest extends TelephonyTest { // Notify subscriptions ready. Sub 2 should become the default. But shouldn't turn off // data of oppt sub 1. mMultiSimSettingControllerUT.onAllSubscriptionsLoaded(); mMultiSimSettingControllerUT.notifyAllSubscriptionLoaded(); waitABit(); verify(mSubControllerMock).setDefaultDataSubId(2); verify(mDataEnabledSettingsMock1, never()).setUserDataEnabled(anyBoolean()); Loading @@ -233,11 +264,13 @@ public class MultiSimSettingControllerTest extends TelephonyTest { clearInvocations(mDataEnabledSettingsMock2); doReturn(2).when(mSubControllerMock).getDefaultDataSubId(); // Toggle data on sub 1 or sub 2. Nothing should happen as they are independent. mMultiSimSettingControllerUT.onUserDataEnabled(1, false); mMultiSimSettingControllerUT.onUserDataEnabled(1, true); mMultiSimSettingControllerUT.notifyUserDataEnabled(1, false); mMultiSimSettingControllerUT.notifyUserDataEnabled(1, true); waitABit(); verify(mSubControllerMock, never()).setDefaultDataSubId(anyInt()); mMultiSimSettingControllerUT.onUserDataEnabled(2, false); mMultiSimSettingControllerUT.onUserDataEnabled(2, true); mMultiSimSettingControllerUT.notifyUserDataEnabled(2, false); mMultiSimSettingControllerUT.notifyUserDataEnabled(2, true); waitABit(); verify(mSubControllerMock, never()).setDefaultDataSubId(anyInt()); verify(mDataEnabledSettingsMock1, never()).setUserDataEnabled(anyBoolean()); verify(mDataEnabledSettingsMock2, never()).setUserDataEnabled(anyBoolean()); Loading @@ -256,7 +289,8 @@ public class MultiSimSettingControllerTest extends TelephonyTest { GlobalSettingsHelper.setBoolean(mContext, Settings.Global.DATA_ROAMING, 2, false); // Notify subscriptions ready. Sub 2 should become the default, as sub 1 is opportunistic. mMultiSimSettingControllerUT.onAllSubscriptionsLoaded(); mMultiSimSettingControllerUT.notifyAllSubscriptionLoaded(); waitABit(); verify(mSubControllerMock).setDefaultDataSubId(2); // Mark sub 2 as data off. Loading @@ -265,7 +299,8 @@ public class MultiSimSettingControllerTest extends TelephonyTest { // Group sub 1 with sub 2. doReturn(Arrays.asList(mSubInfo1, mSubInfo2)).when(mSubControllerMock) .getSubscriptionsInGroup(any(), anyString()); mMultiSimSettingControllerUT.onSubscriptionGroupChanged(mGroupUuid1); mMultiSimSettingControllerUT.notifySubscriptionGroupChanged(mGroupUuid1); waitABit(); // This should result in setting sync. verify(mDataEnabledSettingsMock1).setUserDataEnabled(false); assertFalse(GlobalSettingsHelper.getBoolean( Loading @@ -274,7 +309,8 @@ public class MultiSimSettingControllerTest extends TelephonyTest { doReturn(false).when(mPhoneMock1).isUserDataEnabled(); doReturn(false).when(mPhoneMock2).isUserDataEnabled(); // Turning data on on sub 2. Sub 1 should also be turned on. mMultiSimSettingControllerUT.onUserDataEnabled(2, true); mMultiSimSettingControllerUT.notifyUserDataEnabled(2, true); waitABit(); verify(mDataEnabledSettingsMock1).setUserDataEnabled(true); } }