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

Commit d098dccf authored by Aleksander Morgado's avatar Aleksander Morgado
Browse files

Use isMobileDataCapable helper in network/datausage components

Disabling telephony support may be done either with the
config_show_sim_info config option, or based on whether
TelephonyManager reports data capabilities. The isMobileDataCapable()
helper method ensures both ways are supported.

Most of the logic in the data usage components rely on a
DataUsageUtils.hasMobileData(), which is already equivalent to
!Utils.isWifiOnly(), i.e. looking at the TelephonyManager mobile data
support. Instead of removing all uses of hasMobileData(), the method
itself has been updated to rely on the new isMobileDataCapable()
helper, so that all the unit tests that mocked hasMobileData() don't
need to be updated.

The relevant unit tests are also updated to mock TelephonyManager
directly.

Bug: 395714454
Test: atest tests/robotests/src/com/android/settings/datausage/
Test: atest tests/spa_unit/src/com/android/settings/datausage/
Flag: EXEMPT bugfix
Change-Id: I722e25ea7b0b078d006ff027e721dd1bc95da17a
parent 9d14b037
Loading
Loading
Loading
Loading
+3 −7
Original line number Diff line number Diff line
@@ -41,11 +41,11 @@ import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.RecyclerView;

import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.applications.AppInfoBase;
import com.android.settings.datausage.lib.AppDataUsageDetailsRepository;
import com.android.settings.datausage.lib.NetworkTemplates;
import com.android.settings.fuelgauge.datasaver.DynamicDenylistManager;
import com.android.settings.network.SubscriptionUtil;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.AppItem;
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
@@ -96,10 +96,6 @@ public class AppDataUsage extends DataUsageBaseFragment implements OnPreferenceC
    private long mSelectedCycle;
    private boolean mIsLoading;

    public boolean isSimHardwareVisible(Context context) {
        return SubscriptionUtil.isSimHardwareVisible(context);
    }

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
@@ -142,7 +138,7 @@ public class AppDataUsage extends DataUsageBaseFragment implements OnPreferenceC
        final UidDetailProvider uidDetailProvider = getUidDetailProvider();

        if (mAppItem.key > 0) {
            if ((!isSimHardwareVisible(mContext)) || !UserHandle.isApp(mAppItem.key)) {
            if ((!Utils.isMobileDataCapable(mContext)) || !UserHandle.isApp(mAppItem.key)) {
                final UidDetail uidDetail = uidDetailProvider.getUidDetail(mAppItem.key, true);
                mIcon = uidDetail.icon;
                mLabel = uidDetail.label;
@@ -280,7 +276,7 @@ public class AppDataUsage extends DataUsageBaseFragment implements OnPreferenceC
    }

    private void updatePrefs(boolean restrictBackground, boolean unrestrictData) {
        if (!isSimHardwareVisible(mContext)) {
        if (!Utils.isMobileDataCapable(mContext)) {
            return;
        }
        setBackPreferenceListAnimatorIfLoaded();
+1 −3
Original line number Diff line number Diff line
@@ -46,7 +46,6 @@ import com.android.settings.R;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settings.datausage.lib.DataUsageFormatter;
import com.android.settings.datausage.lib.NetworkTemplates;
import com.android.settings.network.SubscriptionUtil;
import com.android.settings.network.telephony.MobileNetworkUtils;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.NetworkPolicyEditor;
@@ -109,7 +108,7 @@ public class BillingCycleSettings extends DataUsageBaseFragment implements
        super.onCreate(icicle);

        final Context context = getContext();
        if (!SubscriptionUtil.isSimHardwareVisible(context)) {
        if (!DataUsageUtils.hasMobileData(context)) {
            finish();
            return;
        }
@@ -529,7 +528,6 @@ public class BillingCycleSettings extends DataUsageBaseFragment implements
                @Override
                protected boolean isPageSearchEnabled(Context context) {
                    return (!MobileNetworkUtils.isMobileNetworkUserRestricted(context))
                            && SubscriptionUtil.isSimHardwareVisible(context)
                            && DataUsageUtils.hasMobileData(context);
                }
            };
+2 −2
Original line number Diff line number Diff line
@@ -30,10 +30,10 @@ import androidx.annotation.VisibleForTesting
import androidx.fragment.app.viewModels
import androidx.preference.Preference
import com.android.settings.R
import com.android.settings.Utils
import com.android.settings.dashboard.DashboardFragment
import com.android.settings.datausage.lib.BillingCycleRepository
import com.android.settings.datausage.lib.NetworkUsageData
import com.android.settings.network.SubscriptionUtil
import com.android.settings.network.telephony.SubscriptionRepository
import com.android.settingslib.spa.framework.util.collectLatestWithLifecycle
import com.android.settingslib.spaprivileged.framework.common.userManager
@@ -100,7 +100,7 @@ open class DataUsageList : DashboardFragment() {
        val warningPreference = findPreference<Preference>(KEY_WARNING)!!
        if (template.matchRule != NetworkTemplate.MATCH_WIFI) {
            warningPreference.setSummary(R.string.operator_warning)
        } else if (SubscriptionUtil.isSimHardwareVisible(context)) {
        } else if (Utils.isMobileDataCapable(context)) {
            warningPreference.setSummary(R.string.non_carrier_data_usage_warning)
        }
    }
+6 −8
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;

import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.datausage.lib.DataUsageLib;
import com.android.settings.network.ProxySubscriptionManager;
@@ -62,10 +63,6 @@ public class DataUsageSummary extends DashboardFragment {
        return R.string.help_url_data_usage;
    }

    public boolean isSimHardwareVisible(Context context) {
        return SubscriptionUtil.isSimHardwareVisible(context);
    }

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
@@ -77,8 +74,9 @@ public class DataUsageSummary extends DashboardFragment {
            return;
        }

        if (!isSimHardwareVisible(context) ||
            MobileNetworkUtils.isMobileNetworkUserRestricted(context)) {
        // Do not return early if device doesn't support mobile data. That condition
        // is later on handled via the hasMobileData variable.
        if (MobileNetworkUtils.isMobileNetworkUserRestricted(context)) {
            finish();
            return;
        }
@@ -128,8 +126,8 @@ public class DataUsageSummary extends DashboardFragment {
    protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
        final Activity activity = getActivity();
        final ArrayList<AbstractPreferenceController> controllers = new ArrayList<>();
        if (!isSimHardwareVisible(context) ||
            MobileNetworkUtils.isMobileNetworkUserRestricted(context)) {
        if (!Utils.isMobileDataCapable(context)
                || MobileNetworkUtils.isMobileNetworkUserRestricted(context)) {
            return controllers;
        }
        final var mSummaryController = new DataUsageSummaryPreferenceController(activity,
+4 −3
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.util.Log;

import com.android.settings.Utils;
import com.android.settings.datausage.lib.DataUsageLib;
import com.android.settings.network.ProxySubscriptionManager;

@@ -84,11 +85,11 @@ public final class DataUsageUtils {

    /**
     * Returns whether device has mobile data.
     * TODO: This is the opposite to Utils.isWifiOnly(), it should be refactored into 1 method.
     * The only purpose of this helper method is to allow easy mocking, e.g. via
     * ShadowDataUsageUtils.IS_MOBILE_DATA_SUPPORTED.
     */
    public static boolean hasMobileData(Context context) {
        final TelephonyManager tele = context.getSystemService(TelephonyManager.class);
        return tele.isDataCapable();
        return Utils.isMobileDataCapable(context);
    }

    /**
Loading