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

Commit 3ba4afa5 authored by sqian's avatar sqian
Browse files

Make hidden API isDataCapable for Telephony

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

Cherry-picking TelephonyManager part of ag/10063635

Test: RILTest; Treehugger; cts
Bug: 147017757
Merged-In: I96b45575eb7f030f3dcb9539c06f8ec25539e2e9
Merged-In: I19ac83f5865e8763cd9414c41d4609f79d0db164
(cherry picked from commit 29141580)

Change-Id: I96b45575eb7f030f3dcb9539c06f8ec25539e2e9
parent ab9527a4
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -9179,6 +9179,7 @@ package android.telephony {
    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isAnyRadioPoweredOn();
    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isApplicationOnUicc(int);
    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 @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isDataEnabledForApn(int);
    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isEmergencyAssistanceEnabled();
+1 −1
Original line number Diff line number Diff line
@@ -658,7 +658,7 @@ public class MobileSignalController extends SignalController<
    }

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

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

+28 −11
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@ import android.compat.annotation.UnsupportedAppUsage;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.net.ConnectivityManager;
import android.net.NetworkStats;
@@ -439,13 +440,9 @@ public class TelephonyManager {
            case UNKNOWN:
                modemCount = MODEM_COUNT_SINGLE_MODEM;
                // check for voice and data support, 0 if not supported
                if (!isVoiceCapable() && !isSmsCapable() && mContext != null) {
                    ConnectivityManager cm = (ConnectivityManager) mContext
                            .getSystemService(Context.CONNECTIVITY_SERVICE);
                    if (cm != null && !cm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)) {
                if (!isVoiceCapable() && !isSmsCapable() && !isDataCapable()) {
                    modemCount = MODEM_COUNT_NO_MODEM;
                }
                }
                break;
            case DSDS:
            case DSDA:
@@ -10522,12 +10519,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
     * 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;
        try {
            int subId = getSubId(SubscriptionManager.getDefaultDataSubscriptionId());
@@ -10535,12 +10541,23 @@ public class TelephonyManager {
            if (telephony != null)
                retVal = telephony.isDataEnabled(subId);
        } catch (RemoteException e) {
            Log.e(TAG, "Error calling ITelephony#isDataEnabled", e);
            Log.e(TAG, "Error isDataConnectionEnabled", e);
        } catch (NullPointerException e) {
        }
        return retVal;
    }

    /**
     * Checks if FEATURE_TELEPHONY_DATA is enabled.
     *
     * @hide
     */
    public boolean isDataCapable() {
        if (mContext == null) return true;
        return mContext.getResources().getBoolean(
                com.android.internal.R.bool.config_mobile_data_capable);
    }

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