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

Commit 56218460 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Use BillingCycleRepository in DataUsageList" into main

parents 913e7149 8c5bd755
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ class BillingCyclePreference @JvmOverloads constructor(
        this.subId = subId
        summary = null
        updateEnabled()
        intent = intent
    }

    override fun onAttached() {
+0 −45
Original line number Diff line number Diff line
@@ -15,23 +15,13 @@
package com.android.settings.datausage;

import android.content.Context;
import android.net.NetworkPolicy;
import android.net.NetworkPolicyManager;
import android.os.Bundle;
import android.os.INetworkManagementService;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.UserManager;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.util.Log;

import com.android.settings.dashboard.DashboardFragment;
import com.android.settingslib.NetworkPolicyEditor;

public abstract class DataUsageBaseFragment extends DashboardFragment {
    private static final String TAG = "DataUsageBase";
    private static final String ETHERNET = "ethernet";

    protected final TemplatePreference.NetworkServices services =
            new TemplatePreference.NetworkServices();
@@ -41,16 +31,10 @@ public abstract class DataUsageBaseFragment extends DashboardFragment {
        super.onCreate(icicle);
        Context context = getContext();

        services.mNetworkService = INetworkManagementService.Stub.asInterface(
                ServiceManager.getService(Context.NETWORKMANAGEMENT_SERVICE));
        services.mPolicyManager = (NetworkPolicyManager) context
                .getSystemService(Context.NETWORK_POLICY_SERVICE);

        services.mPolicyEditor = new NetworkPolicyEditor(services.mPolicyManager);

        services.mTelephonyManager = context.getSystemService(TelephonyManager.class);
        services.mSubscriptionManager = SubscriptionManager.from(context);
        services.mUserManager = UserManager.get(context);
    }

    @Override
@@ -58,33 +42,4 @@ public abstract class DataUsageBaseFragment extends DashboardFragment {
        super.onResume();
        services.mPolicyEditor.read();
    }

    protected boolean isAdmin() {
        return services.mUserManager.isAdminUser();
    }

    protected boolean isMobileDataAvailable(int subId) {
        return services.mSubscriptionManager.getActiveSubscriptionInfo(subId) != null;
    }

    protected boolean isNetworkPolicyModifiable(NetworkPolicy policy, int subId) {
        return policy != null && isBandwidthControlEnabled() && services.mUserManager.isAdminUser()
                && isDataEnabled(subId);
    }

    private boolean isDataEnabled(int subId) {
        if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
            return true;
        }
        return services.mTelephonyManager.getDataEnabled(subId);
    }

    protected boolean isBandwidthControlEnabled() {
        try {
            return services.mNetworkService.isBandwidthControlEnabled();
        } catch (RemoteException e) {
            Log.w(TAG, "problem talking with INetworkManagementService: ", e);
            return false;
        }
    }
}
+17 −4
Original line number Diff line number Diff line
@@ -32,7 +32,6 @@ import android.view.View.AccessibilityDelegate;
import android.view.accessibility.AccessibilityEvent;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ImageView;
import android.widget.Spinner;

import androidx.annotation.NonNull;
@@ -46,6 +45,7 @@ import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.datausage.CycleAdapter.SpinnerInterface;
import com.android.settings.datausage.lib.BillingCycleRepository;
import com.android.settings.network.MobileDataEnabledListener;
import com.android.settings.network.MobileNetworkRepository;
import com.android.settings.widget.LoadingViewController;
@@ -108,6 +108,7 @@ public class DataUsageList extends DataUsageBaseFragment
    private MobileNetworkRepository mMobileNetworkRepository;
    private SubscriptionInfoEntity mSubscriptionInfoEntity;
    private DataUsageListAppsController mDataUsageListAppsController;
    private BillingCycleRepository mBillingCycleRepository;

    @Override
    public int getMetricsCategory() {
@@ -125,7 +126,8 @@ public class DataUsageList extends DataUsageBaseFragment
        }

        final Activity activity = getActivity();
        if (!isBandwidthControlEnabled()) {
        mBillingCycleRepository = createBillingCycleRepository();
        if (!mBillingCycleRepository.isBandwidthControlEnabled()) {
            Log.w(TAG, "No bandwidth control; leaving");
            activity.finish();
            return;
@@ -146,6 +148,12 @@ public class DataUsageList extends DataUsageBaseFragment
        mDataUsageListAppsController.init(mTemplate);
    }

    @VisibleForTesting
    @NonNull
    BillingCycleRepository createBillingCycleRepository() {
        return new BillingCycleRepository(requireContext());
    }

    @Override
    public void onViewCreated(@NonNull View v, Bundle savedInstanceState) {
        super.onViewCreated(v, savedInstanceState);
@@ -286,10 +294,9 @@ public class DataUsageList extends DataUsageBaseFragment
        final NetworkPolicy policy = services.mPolicyEditor.getPolicy(mTemplate);
        final View configureButton = mHeader.findViewById(R.id.filter_settings);
        //SUB SELECT
        if (isNetworkPolicyModifiable(policy, mSubId) && isMobileDataAvailable(mSubId)) {
        if (policy != null && isMobileDataAvailable()) {
            mChart.setNetworkPolicy(policy);
            configureButton.setVisibility(View.VISIBLE);
            ((ImageView) configureButton).setColorFilter(android.R.color.white);
        } else {
            // controls are disabled; don't bind warning/limit sweeps
            mChart.setNetworkPolicy(null);
@@ -304,6 +311,12 @@ public class DataUsageList extends DataUsageBaseFragment
        updateSelectedCycle();
    }

    private boolean isMobileDataAvailable() {
        return mBillingCycleRepository.isModifiable(mSubId)
                && SubscriptionManager.from(requireContext())
                .getActiveSubscriptionInfo(mSubId) != null;
    }

    /**
     * Updates the chart and detail data when initial loaded or selected cycle changed.
     */
+4 −2
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.app.ActivityManager
import android.content.Context
import android.net.NetworkTemplate
import android.os.Bundle
import androidx.annotation.OpenForTesting
import androidx.annotation.VisibleForTesting
import androidx.lifecycle.LifecycleCoroutineScope
import androidx.lifecycle.LifecycleOwner
@@ -37,7 +38,8 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext

class DataUsageListAppsController(context: Context, preferenceKey: String) :
@OpenForTesting
open class DataUsageListAppsController(context: Context, preferenceKey: String) :
    BasePreferenceController(context, preferenceKey) {

    private val uidDetailProvider = UidDetailProvider(context)
@@ -48,7 +50,7 @@ class DataUsageListAppsController(context: Context, preferenceKey: String) :

    private var cycleData: List<NetworkCycleChartData>? = null

    fun init(template: NetworkTemplate) {
    open fun init(template: NetworkTemplate) {
        this.template = template
        repository = AppDataUsageRepository(
            context = mContext,
+1 −1
Original line number Diff line number Diff line
@@ -103,7 +103,7 @@ public class DataUsageSummary extends DataUsageBaseFragment implements DataUsage
        mDefaultTemplate = DataUsageUtils.getDefaultTemplate(context, defaultSubId);
        mSummaryPreference = findPreference(KEY_STATUS_HEADER);

        if (!hasMobileData || !isAdmin()) {
        if (!hasMobileData || !UserManager.get(context).isAdminUser()) {
            removePreference(KEY_RESTRICT_BACKGROUND);
        }
        boolean hasWifiRadio = DataUsageUtils.hasWifiRadio(context);
Loading