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

Commit 6395cf8d authored by Chaohui Wang's avatar Chaohui Wang
Browse files

Unify the default template and title

On AppDataUsage page, using single source of truth to calculate the
default template, and set title base on the current template.

Fix: 213266028
Fix: 234104784
Test: visual - on AppDataUsage
Test: unit test
Change-Id: I80facca0b000964e901905af51a344a4bc9f498b
parent b7f8c15f
Loading
Loading
Loading
Loading
+7 −16
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@
package com.android.settings.applications.appinfo;

import android.content.Context;
import android.net.NetworkStats;
import android.net.NetworkTemplate;
import android.os.Bundle;
import android.os.Process;
@@ -34,8 +33,8 @@ import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.Utils;
import com.android.settings.datausage.AppDataUsage;
import com.android.settings.datausage.DataUsageUtils;
import com.android.settings.network.SubscriptionUtil;
import com.android.settings.datausage.lib.NetworkTemplates;
import com.android.settings.spa.app.appinfo.AppDataUsagePreferenceKt;
import com.android.settingslib.AppItem;
import com.android.settingslib.applications.AppUtils;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
@@ -46,6 +45,10 @@ import com.android.settingslib.net.NetworkCycleDataForUidLoader;

import java.util.List;

/**
 * @deprecated Will be removed, use {@link AppDataUsagePreferenceKt} instead.
 */
@Deprecated(forRemoval = true)
public class AppDataUsagePreferenceController extends AppInfoPreferenceControllerBase
        implements LoaderManager.LoaderCallbacks<List<NetworkCycleDataForUid>>, LifecycleObserver,
        OnResume, OnPause {
@@ -92,7 +95,7 @@ public class AppDataUsagePreferenceController extends AppInfoPreferenceControlle

    @Override
    public Loader<List<NetworkCycleDataForUid>> onCreateLoader(int id, Bundle args) {
        final NetworkTemplate template = getTemplate(mContext);
        final NetworkTemplate template = NetworkTemplates.INSTANCE.getDefaultTemplate(mContext);
        final int uid = mParent.getAppEntry().info.uid;

        final NetworkCycleDataForUidLoader.Builder builder =
@@ -147,18 +150,6 @@ public class AppDataUsagePreferenceController extends AppInfoPreferenceControlle
        return mContext.getString(R.string.computing_size);
    }

    private static NetworkTemplate getTemplate(Context context) {
        if (SubscriptionUtil.isSimHardwareVisible(context)
                && DataUsageUtils.hasReadyMobileRadio(context)) {
            return new NetworkTemplate.Builder(NetworkTemplate.MATCH_MOBILE).setMeteredness(
                    NetworkStats.METERED_YES).build();
        }
        if (DataUsageUtils.hasWifiRadio(context)) {
            return new NetworkTemplate.Builder(NetworkTemplate.MATCH_WIFI).build();
        }
        return new NetworkTemplate.Builder(NetworkTemplate.MATCH_ETHERNET).build();
    }

    @VisibleForTesting
    boolean isBandwidthControlEnabled() {
        return Utils.isBandwidthControlEnabled();
+5 −4
Original line number Diff line number Diff line
@@ -29,7 +29,6 @@ import android.net.NetworkTemplate;
import android.os.Bundle;
import android.os.Process;
import android.os.UserHandle;
import android.telephony.SubscriptionManager;
import android.util.ArraySet;
import android.util.IconDrawableFactory;
import android.util.Log;
@@ -44,6 +43,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.android.settings.R;
import com.android.settings.applications.AppInfoBase;
import com.android.settings.datausage.lib.AppDataUsageDetailsRepository;
import com.android.settings.datausage.lib.NetworkTemplates;
import com.android.settings.datausage.lib.NetworkUsageDetailsData;
import com.android.settings.network.SubscriptionUtil;
import com.android.settings.widget.EntityHeaderController;
@@ -118,15 +118,16 @@ public class AppDataUsage extends DataUsageBaseFragment implements OnPreferenceC
        mSelectedCycle = (args != null) ? args.getLong(ARG_SELECTED_CYCLE) : 0L;

        if (mTemplate == null) {
            mTemplate = DataUsageUtils.getDefaultTemplate(mContext,
                    SubscriptionManager.getDefaultDataSubscriptionId());
            mTemplate = NetworkTemplates.INSTANCE.getDefaultTemplate(mContext);
        }
        final Activity activity = requireActivity();
        activity.setTitle(NetworkTemplates.getTitleResId(mTemplate));
        if (mAppItem == null) {
            int uid = (args != null) ? args.getInt(AppInfoBase.ARG_PACKAGE_UID, -1)
                    : getActivity().getIntent().getIntExtra(AppInfoBase.ARG_PACKAGE_UID, -1);
            if (uid == -1) {
                // TODO: Log error.
                getActivity().finish();
                activity.finish();
            } else {
                addUid(uid);
                mAppItem = new AppItem(uid);
+2 −4
Original line number Diff line number Diff line
@@ -17,9 +17,9 @@ package com.android.settings.datausage;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.provider.Settings;
import android.util.Log;

import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settingslib.AppItem;

@@ -61,14 +61,12 @@ public class AppDataUsageActivity extends SettingsActivity {
        args.putParcelable(AppDataUsage.ARG_APP_ITEM, appItem);
        intent.putExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS, args);
        intent.putExtra(EXTRA_SHOW_FRAGMENT, AppDataUsage.class.getName());
        intent.putExtra(EXTRA_SHOW_FRAGMENT_TITLE_RESID, R.string.data_usage_app_summary_title);

        super.onCreate(savedInstanceState);
    }

    @Override
    protected boolean isValidFragment(String fragmentName) {
        return super.isValidFragment(fragmentName)
                || AppDataUsage.class.getName().equals(fragmentName);
        return AppDataUsage.class.getName().equals(fragmentName);
    }
}
+2 −2
Original line number Diff line number Diff line
@@ -44,6 +44,7 @@ import androidx.preference.SwitchPreference;

import com.android.settings.R;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
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;
@@ -128,8 +129,7 @@ public class BillingCycleSettings extends DataUsageBaseFragment implements
        }

        if (mNetworkTemplate == null) {
            mNetworkTemplate = DataUsageUtils.getDefaultTemplate(context,
                DataUsageUtils.getDefaultSubscriptionId(context));
            mNetworkTemplate = NetworkTemplates.INSTANCE.getDefaultTemplate(context);
        }

        mBillingCycle = findPreference(KEY_BILLING_CYCLE);
+0 −40
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@ package com.android.settings.datausage;
import static android.content.pm.PackageManager.FEATURE_ETHERNET;
import static android.content.pm.PackageManager.FEATURE_USB_HOST;
import static android.content.pm.PackageManager.FEATURE_WIFI;
import static android.telephony.TelephonyManager.SIM_STATE_READY;

import android.app.usage.NetworkStats.Bucket;
import android.app.usage.NetworkStatsManager;
@@ -49,7 +48,6 @@ import java.util.Optional;
public final class DataUsageUtils {
    static final boolean TEST_RADIOS = false;
    static final String TEST_RADIOS_PROP = "test.radios";
    private static final boolean LOGD = false;
    private static final String ETHERNET = "ethernet";
    private static final String TAG = "DataUsageUtils";

@@ -106,44 +104,6 @@ public final class DataUsageUtils {
        return tele.isDataCapable();
    }

    /**
     * Test if device has a mobile data radio with SIM in ready state.
     */
    public static boolean hasReadyMobileRadio(Context context) {
        if (DataUsageUtils.TEST_RADIOS) {
            return SystemProperties.get(DataUsageUtils.TEST_RADIOS_PROP).contains("mobile");
        }
        final List<SubscriptionInfo> subInfoList =
                ProxySubscriptionManager.getInstance(context)
                .getActiveSubscriptionsInfo();
        // No activated Subscriptions
        if (subInfoList == null) {
            if (LOGD) {
                Log.d(TAG, "hasReadyMobileRadio: subInfoList=null");
            }
            return false;
        }
        final TelephonyManager tele = context.getSystemService(TelephonyManager.class);
        // require both supported network and ready SIM
        boolean isReady = true;
        for (SubscriptionInfo subInfo : subInfoList) {
            isReady = isReady & tele.getSimState(subInfo.getSimSlotIndex()) == SIM_STATE_READY;
            if (LOGD) {
                Log.d(TAG, "hasReadyMobileRadio: subInfo=" + subInfo);
            }
        }

        final boolean isDataCapable = tele.isDataCapable();
        final boolean retVal = isDataCapable && isReady;
        if (LOGD) {
            Log.d(TAG, "hasReadyMobileRadio:"
                    + " telephonManager.isDataCapable()="
                    + isDataCapable
                    + " isReady=" + isReady);
        }
        return retVal;
    }

    /**
     * Whether device has a Wi-Fi data radio.
     */
Loading