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

Commit 3d552542 authored by Ling Ma's avatar Ling Ma
Browse files

Check phone in call for DataDuringCall

Because MMS requests can be routed to non-DDS. Without the change, MMS will be accidentally allowed due to the current dataDuringCall policy check.

Bug: 244064524
Test: manual + UT
Change-Id: I907bad0d58d5b1814e4e28cd3d56df1db49facf9
parent e28492f7
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -44,6 +44,7 @@ import android.util.LocalLog;

import com.android.internal.telephony.GlobalSettingsHelper;
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.PhoneConstants;
import com.android.internal.telephony.SettingsObserver;
import com.android.internal.telephony.SubscriptionController;
import com.android.internal.telephony.data.DataConfigManager.DataConfigManagerCallback;
@@ -712,7 +713,7 @@ public class DataSettingsManager extends Handler {
        // mobile data policy : data during call
        if (isMobileDataPolicyEnabled(TelephonyManager
                .MOBILE_DATA_POLICY_DATA_ON_NON_DEFAULT_DURING_VOICE_CALL)) {
            overridden = isNonDds;
            overridden = isNonDds && mPhone.getState() != PhoneConstants.State.IDLE;
        }
        return overridden;
    }
+11 −2
Original line number Diff line number Diff line
@@ -1498,8 +1498,6 @@ public class DataNetworkControllerTest extends TelephonyTest {

    @Test
    public void testIsDataEnabledOverriddenForApn_dataDuringCall() throws Exception {
        // Note: we don't check phone call status in DSMGR as the check should already been done in
        // PhoneSwitcher when routing requests.
        doReturn(1).when(mPhone).getSubId();
        doReturn(2).when(mSubscriptionController).getDefaultDataSubId();
        // Data disabled
@@ -1511,6 +1509,17 @@ public class DataNetworkControllerTest extends TelephonyTest {
                .MOBILE_DATA_POLICY_DATA_ON_NON_DEFAULT_DURING_VOICE_CALL, true);
        processAllMessages();

        // No active phone call
        doReturn(PhoneConstants.State.IDLE).when(mPhone).getState();
        mDataNetworkControllerUT.addNetworkRequest(
                createNetworkRequest(NetworkCapabilities.NET_CAPABILITY_INTERNET));
        processAllMessages();

        // Verify no internet connection due to no active phone call
        verifyNoConnectedNetworkHasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);

        // Phone ringing
        doReturn(PhoneConstants.State.RINGING).when(mPhone).getState();
        mDataNetworkControllerUT.addNetworkRequest(
                createNetworkRequest(NetworkCapabilities.NET_CAPABILITY_INTERNET));
        processAllMessages();