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

Commit 620e1816 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Prevent wrong data selection pop up while activating a new subscription...

Merge "Prevent wrong data selection pop up while activating a new subscription in DSDS." into tm-qpr-dev
parents fa7d5acc af241c78
Loading
Loading
Loading
Loading
+17 −6
Original line number Diff line number Diff line
@@ -303,7 +303,7 @@ public class MultiSimSettingController extends Handler {
            case EVENT_USER_DATA_ENABLED: {
                int subId = msg.arg1;
                boolean enable = msg.arg2 != 0;
                onUserDataEnabled(subId, enable);
                onUserDataEnabled(subId, enable, true);
                break;
            }
            case EVENT_ROAMING_DATA_ENABLED: {
@@ -352,14 +352,15 @@ public class MultiSimSettingController extends Handler {
     * If user is enabling a non-default non-opportunistic subscription, make it default
     * data subscription.
     */
    protected void onUserDataEnabled(int subId, boolean enable) {
        if (DBG) log("onUserDataEnabled");
    private void onUserDataEnabled(int subId, boolean enable, boolean setDefaultData) {
        if (DBG) log("[onUserDataEnabled] subId=" + subId + " enable=" + enable +
        " setDefaultData=" + setDefaultData);
        // Make sure MOBILE_DATA of subscriptions in same group are synced.
        setUserDataEnabledForGroup(subId, enable);

        // If user is enabling a non-default non-opportunistic subscription, make it default.
        if (mSubController.getDefaultDataSubId() != subId && !mSubController.isOpportunistic(subId)
                && enable && mSubController.isActiveSubId(subId)) {
                && enable && mSubController.isActiveSubId(subId) && setDefaultData) {
             android.provider.Settings.Global.putInt(mContext.getContentResolver(),
                 SETTING_USER_PREF_DATA_SUB, subId);
            mSubController.setDefaultDataSubId(subId);
@@ -546,13 +547,23 @@ public class MultiSimSettingController extends Handler {
        try {
            enable = GlobalSettingsHelper.getBoolean(
                    mContext, Settings.Global.MOBILE_DATA, refSubId);
            onUserDataEnabled(refSubId, enable);
        } catch (SettingNotFoundException exception) {
            //pass invalid refSubId to fetch the single-sim setting
            enable = GlobalSettingsHelper.getBoolean(
                    mContext, Settings.Global.MOBILE_DATA, INVALID_SUBSCRIPTION_ID, enable);
            onUserDataEnabled(refSubId, enable);
        }
        boolean setDefaultData = true;
        List<SubscriptionInfo> activeSubList = mSubController.getActiveSubscriptionInfoList(
                mContext.getOpPackageName(), mContext.getAttributionTag());
        for (SubscriptionInfo activeInfo : activeSubList) {
            if (!(groupUuid.equals(activeInfo.getGroupUuid()))) {
                // Do not set refSubId as defaultDataSubId if there are other active
                // subscriptions which does not belong to this groupUuid
                setDefaultData = false;
                break;
            }
        }
        onUserDataEnabled(refSubId, enable, setDefaultData);

        enable = false;
        try {
+31 −1
Original line number Diff line number Diff line
@@ -909,4 +909,34 @@ public class MultiSimSettingControllerTest extends TelephonyTest {
        verify(mSubControllerMock).getActiveSubInfoCountMax();
        verify(mSubControllerMock).setDefaultDataSubId(anyInt());
    }

    @Test
    public void onSubscriptionGroupChanged_hasActiveSubNotPartOfGroup() {
        // sub1 and sub2 are active subs already
        // Create a subscription group with only sub2
        doReturn(mGroupUuid1).when(mSubControllerMock).getGroupUuid(2);
        doReturn(Arrays.asList(mSubInfo2)).when(mSubControllerMock)
                .getSubscriptionsInGroup(any(), anyString(), nullable(String.class));
        mMultiSimSettingControllerUT.notifySubscriptionGroupChanged(mGroupUuid1);
        processAllMessages();
        // Default data is not modified as sub1 is active sub not part of this groupUuid
        verify(mSubControllerMock, never()).setDefaultDataSubId(anyInt());
    }

    @Test
    public void onSubscriptionGroupChanged_allActiveSubArePartOfGroup() throws Exception {
        doReturn(3).when(mSubControllerMock).getDefaultDataSubId();
        // Create subscription grouping of subs 1 and 2.
        replaceInstance(SubscriptionInfo.class, "mGroupUUID", mSubInfo1, mGroupUuid1);
        doReturn(mGroupUuid1).when(mSubControllerMock).getGroupUuid(1);
        doReturn(mGroupUuid1).when(mSubControllerMock).getGroupUuid(2);
        GlobalSettingsHelper.setBoolean(mContext, Settings.Global.MOBILE_DATA, 1, true);
        doReturn(Arrays.asList(mSubInfo1, mSubInfo2)).when(mSubControllerMock)
                .getSubscriptionsInGroup(any(), anyString(), nullable(String.class));

        mMultiSimSettingControllerUT.notifySubscriptionGroupChanged(mGroupUuid1);
        processAllMessages();
        // Default data is set to sub1
        verify(mSubControllerMock).setDefaultDataSubId(1);
    }
}
 No newline at end of file