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

Commit 9f487a64 authored by Ling Ma's avatar Ling Ma Committed by Jack Yu
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
Merged-In: I907bad0d58d5b1814e4e28cd3d56df1db49facf9
Change-Id: I907bad0d58d5b1814e4e28cd3d56df1db49facf9
parent 62447c97
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
@@ -1625,8 +1625,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
@@ -1638,6 +1636,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();