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

Commit 29141580 authored by Shuo Qian's avatar Shuo Qian
Browse files

Make hidden API isDataCapable for Telephony

Rename isDataCapable to isDataConnectionEnabled as a System API for
 System UI.

Test: RILTest; Treehugger; cts
Bug: 147017757
Change-Id: I96b45575eb7f030f3dcb9539c06f8ec25539e2e9
parent 769c9a5e
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -10237,6 +10237,7 @@ package android.telephony {
    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isApnMetered(int);
    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isApnMetered(int);
    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isApplicationOnUicc(int);
    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isApplicationOnUicc(int);
    method public boolean isCurrentSimOperator(@NonNull String, int, @Nullable String);
    method public boolean isCurrentSimOperator(@NonNull String, int, @Nullable String);
    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isDataConnectionEnabled();
    method public boolean isDataConnectivityPossible();
    method public boolean isDataConnectivityPossible();
    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isDataEnabledForApn(int);
    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isDataEnabledForApn(int);
    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isEmergencyAssistanceEnabled();
    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isEmergencyAssistanceEnabled();
+1 −1
Original line number Original line Diff line number Diff line
@@ -654,7 +654,7 @@ public class MobileSignalController extends SignalController<
    }
    }


    boolean isDataDisabled() {
    boolean isDataDisabled() {
        return !mPhone.isDataCapable();
        return !mPhone.isDataConnectionEnabled();
    }
    }


    @VisibleForTesting
    @VisibleForTesting
+1 −1
Original line number Original line Diff line number Diff line
@@ -180,7 +180,7 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
    protected void setupNetworkController() {
    protected void setupNetworkController() {
        // For now just pretend to be the data sim, so we can test that too.
        // For now just pretend to be the data sim, so we can test that too.
        mSubId = SubscriptionManager.DEFAULT_SUBSCRIPTION_ID;
        mSubId = SubscriptionManager.DEFAULT_SUBSCRIPTION_ID;
        when(mMockTm.isDataCapable()).thenReturn(true);
        when(mMockTm.isDataConnectionEnabled()).thenReturn(true);
        setDefaultSubId(mSubId);
        setDefaultSubId(mSubId);
        setSubscriptions(mSubId);
        setSubscriptions(mSubId);
        mMobileSignalController = mNetworkController.mMobileSignalControllers.get(mSubId);
        mMobileSignalController = mNetworkController.mMobileSignalControllers.get(mSubId);
+6 −6
Original line number Original line Diff line number Diff line
@@ -121,7 +121,7 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest {
    @Test
    @Test
    public void testNoInternetIcon_withDefaultSub() {
    public void testNoInternetIcon_withDefaultSub() {
        setupNetworkController();
        setupNetworkController();
        when(mMockTm.isDataCapable()).thenReturn(false);
        when(mMockTm.isDataConnectionEnabled()).thenReturn(false);
        setupDefaultSignal();
        setupDefaultSignal();
        updateDataConnectionState(TelephonyManager.DATA_CONNECTED, 0);
        updateDataConnectionState(TelephonyManager.DATA_CONNECTED, 0);
        setConnectivityViaBroadcast(NetworkCapabilities.TRANSPORT_CELLULAR, false, false);
        setConnectivityViaBroadcast(NetworkCapabilities.TRANSPORT_CELLULAR, false, false);
@@ -135,7 +135,7 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest {
    @Test
    @Test
    public void testDataDisabledIcon_withDefaultSub() {
    public void testDataDisabledIcon_withDefaultSub() {
        setupNetworkController();
        setupNetworkController();
        when(mMockTm.isDataCapable()).thenReturn(false);
        when(mMockTm.isDataConnectionEnabled()).thenReturn(false);
        setupDefaultSignal();
        setupDefaultSignal();
        updateDataConnectionState(TelephonyManager.DATA_DISCONNECTED, 0);
        updateDataConnectionState(TelephonyManager.DATA_DISCONNECTED, 0);
        setConnectivityViaBroadcast(NetworkCapabilities.TRANSPORT_CELLULAR, false, false);
        setConnectivityViaBroadcast(NetworkCapabilities.TRANSPORT_CELLULAR, false, false);
@@ -149,7 +149,7 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest {
    @Test
    @Test
    public void testNonDefaultSIM_showsFullSignal_connected() {
    public void testNonDefaultSIM_showsFullSignal_connected() {
        setupNetworkController();
        setupNetworkController();
        when(mMockTm.isDataCapable()).thenReturn(false);
        when(mMockTm.isDataConnectionEnabled()).thenReturn(false);
        setupDefaultSignal();
        setupDefaultSignal();
        setDefaultSubId(mSubId + 1);
        setDefaultSubId(mSubId + 1);
        updateDataConnectionState(TelephonyManager.DATA_CONNECTED, 0);
        updateDataConnectionState(TelephonyManager.DATA_CONNECTED, 0);
@@ -164,7 +164,7 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest {
    @Test
    @Test
    public void testNonDefaultSIM_showsFullSignal_disconnected() {
    public void testNonDefaultSIM_showsFullSignal_disconnected() {
        setupNetworkController();
        setupNetworkController();
        when(mMockTm.isDataCapable()).thenReturn(false);
        when(mMockTm.isDataConnectionEnabled()).thenReturn(false);
        setupDefaultSignal();
        setupDefaultSignal();
        setDefaultSubId(mSubId + 1);
        setDefaultSubId(mSubId + 1);
        updateDataConnectionState(TelephonyManager.DATA_DISCONNECTED, 0);
        updateDataConnectionState(TelephonyManager.DATA_DISCONNECTED, 0);
@@ -429,7 +429,7 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest {
    @Test
    @Test
    public void testDataDisabledIcon_UserNotSetup() {
    public void testDataDisabledIcon_UserNotSetup() {
        setupNetworkController();
        setupNetworkController();
        when(mMockTm.isDataCapable()).thenReturn(false);
        when(mMockTm.isDataConnectionEnabled()).thenReturn(false);
        setupDefaultSignal();
        setupDefaultSignal();
        updateDataConnectionState(TelephonyManager.DATA_DISCONNECTED, 0);
        updateDataConnectionState(TelephonyManager.DATA_DISCONNECTED, 0);
        setConnectivityViaBroadcast(NetworkCapabilities.TRANSPORT_CELLULAR, false, false);
        setConnectivityViaBroadcast(NetworkCapabilities.TRANSPORT_CELLULAR, false, false);
@@ -444,7 +444,7 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest {
    @Test
    @Test
    public void testAlwaysShowDataRatIcon() {
    public void testAlwaysShowDataRatIcon() {
        setupDefaultSignal();
        setupDefaultSignal();
        when(mMockTm.isDataCapable()).thenReturn(false);
        when(mMockTm.isDataConnectionEnabled()).thenReturn(false);
        updateDataConnectionState(TelephonyManager.DATA_DISCONNECTED,
        updateDataConnectionState(TelephonyManager.DATA_DISCONNECTED,
                TelephonyManager.NETWORK_TYPE_GSM);
                TelephonyManager.NETWORK_TYPE_GSM);


+28 −11
Original line number Original line Diff line number Diff line
@@ -46,6 +46,7 @@ import android.compat.annotation.UnsupportedAppUsage;
import android.content.ComponentName;
import android.content.ComponentName;
import android.content.Context;
import android.content.Context;
import android.content.Intent;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.database.Cursor;
import android.net.ConnectivityManager;
import android.net.ConnectivityManager;
import android.net.NetworkStats;
import android.net.NetworkStats;
@@ -450,13 +451,9 @@ public class TelephonyManager {
            case UNKNOWN:
            case UNKNOWN:
                modemCount = MODEM_COUNT_SINGLE_MODEM;
                modemCount = MODEM_COUNT_SINGLE_MODEM;
                // check for voice and data support, 0 if not supported
                // check for voice and data support, 0 if not supported
                if (!isVoiceCapable() && !isSmsCapable() && mContext != null) {
                if (!isVoiceCapable() && !isSmsCapable() && !isDataCapable()) {
                    ConnectivityManager cm = (ConnectivityManager) mContext
                            .getSystemService(Context.CONNECTIVITY_SERVICE);
                    if (cm != null && !cm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)) {
                    modemCount = MODEM_COUNT_NO_MODEM;
                    modemCount = MODEM_COUNT_NO_MODEM;
                }
                }
                }
                break;
                break;
            case DSDS:
            case DSDS:
            case DSDA:
            case DSDA:
@@ -10637,12 +10634,21 @@ public class TelephonyManager {
    }
    }


    /**
    /**
     * Checks whether cellular data connection is enabled in the device.
     *
     * Whether cellular data connection is enabled, meaning upon request whether will try to setup
     * metered data connection considering all factors below:
     * 1) User turned on data setting {@link #isDataEnabled}.
     * 2) Carrier allows data to be on.
     * 3) Network policy.
     * And possibly others.
     *
     * @return {@code true} if the overall data connection is capable; {@code false} if not.
     * @hide
     * @hide
     * It's similar to isDataEnabled, but unlike isDataEnabled, this API also evaluates
     * carrierDataEnabled, policyDataEnabled etc to give a final decision of whether mobile data is
     * capable of using.
     */
     */
    public boolean isDataCapable() {
    @SystemApi
    @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
    public boolean isDataConnectionEnabled() {
        boolean retVal = false;
        boolean retVal = false;
        try {
        try {
            int subId = getSubId(SubscriptionManager.getDefaultDataSubscriptionId());
            int subId = getSubId(SubscriptionManager.getDefaultDataSubscriptionId());
@@ -10650,12 +10656,23 @@ public class TelephonyManager {
            if (telephony != null)
            if (telephony != null)
                retVal = telephony.isDataEnabled(subId);
                retVal = telephony.isDataEnabled(subId);
        } catch (RemoteException e) {
        } catch (RemoteException e) {
            Log.e(TAG, "Error calling ITelephony#isDataEnabled", e);
            Log.e(TAG, "Error isDataConnectionEnabled", e);
        } catch (NullPointerException e) {
        } catch (NullPointerException e) {
        }
        }
        return retVal;
        return retVal;
    }
    }


    /**
     * Checks if FEATURE_TELEPHONY_DATA is enabled.
     *
     * @hide
     */
    public boolean isDataCapable() {
        if (mContext == null) return true;
        return mContext.getPackageManager().hasSystemFeature(
                PackageManager.FEATURE_TELEPHONY_DATA);
    }

    /**
    /**
     * In this mode, modem will not send specified indications when screen is off.
     * In this mode, modem will not send specified indications when screen is off.
     * @hide
     * @hide