diff options
author | Bonian Chen <bonianchen@google.com> | 2020-05-29 17:28:34 +0800 |
---|---|---|
committer | Bonian Chen <bonianchen@google.com> | 2020-06-02 17:16:53 +0800 |
commit | d40f7f707e3aaf34d95b1f5fc99b8846a0e85640 (patch) | |
tree | 71b396954bb4d6f466a919b6358e1a37da88f7e9 /src/com | |
parent | 90331c0f2099db7e69a02266d1fd80f14f2d10f6 (diff) | |
download | packages_apps_Settings-d40f7f707e3aaf34d95b1f5fc99b8846a0e85640.tar.gz packages_apps_Settings-d40f7f707e3aaf34d95b1f5fc99b8846a0e85640.tar.bz2 packages_apps_Settings-d40f7f707e3aaf34d95b1f5fc99b8846a0e85640.zip |
[Settings] Move mobile data template out of framework
Move mobile data template out of framework
Bug: 151751844
Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=DataUsageLibTest
Change-Id: I5072cd1e673194d00b3ce82242bf5fbad88d23cd
Diffstat (limited to 'src/com')
6 files changed, 90 insertions, 7 deletions
diff --git a/src/com/android/settings/datausage/BillingCyclePreferenceController.java b/src/com/android/settings/datausage/BillingCyclePreferenceController.java index 88bf63c72f..2f144cb78a 100644 --- a/src/com/android/settings/datausage/BillingCyclePreferenceController.java +++ b/src/com/android/settings/datausage/BillingCyclePreferenceController.java @@ -26,11 +26,12 @@ import android.os.UserManager; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; +import androidx.preference.PreferenceScreen; + import com.android.settings.core.BasePreferenceController; +import com.android.settings.datausage.lib.DataUsageLib; import com.android.settingslib.NetworkPolicyEditor; -import androidx.preference.PreferenceScreen; - public class BillingCyclePreferenceController extends BasePreferenceController { private int mSubscriptionId; @@ -58,7 +59,7 @@ public class BillingCyclePreferenceController extends BasePreferenceController { services.mSubscriptionManager = mContext.getSystemService(SubscriptionManager.class); services.mUserManager = mContext.getSystemService(UserManager.class); - NetworkTemplate template = DataUsageUtils.getMobileTemplate(mContext, mSubscriptionId); + NetworkTemplate template = DataUsageLib.getMobileTemplate(mContext, mSubscriptionId); preference.setTemplate(template, mSubscriptionId, services); } diff --git a/src/com/android/settings/datausage/DataUsageSummary.java b/src/com/android/settings/datausage/DataUsageSummary.java index 7b67a0282c..9d9bf9c65a 100644 --- a/src/com/android/settings/datausage/DataUsageSummary.java +++ b/src/com/android/settings/datausage/DataUsageSummary.java @@ -33,6 +33,7 @@ import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.R; +import com.android.settings.datausage.lib.DataUsageLib; import com.android.settings.network.ProxySubscriptionManager; import com.android.settingslib.NetworkPolicyEditor; import com.android.settingslib.core.AbstractPreferenceController; @@ -166,7 +167,7 @@ public class DataUsageSummary extends DataUsageBaseFragment implements DataUsage private void addMobileSection(int subId, SubscriptionInfo subInfo) { TemplatePreferenceCategory category = (TemplatePreferenceCategory) inflatePreferences(R.xml.data_usage_cellular); - category.setTemplate(DataUsageUtils.getMobileTemplate(getContext(), subId), + category.setTemplate(DataUsageLib.getMobileTemplate(getContext(), subId), subId, services); category.pushTemplates(services); if (subInfo != null && !TextUtils.isEmpty(subInfo.getDisplayName())) { diff --git a/src/com/android/settings/datausage/DataUsageSummaryPreferenceController.java b/src/com/android/settings/datausage/DataUsageSummaryPreferenceController.java index 4178f6cc8f..97cf59963b 100644 --- a/src/com/android/settings/datausage/DataUsageSummaryPreferenceController.java +++ b/src/com/android/settings/datausage/DataUsageSummaryPreferenceController.java @@ -39,6 +39,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.android.internal.util.CollectionUtils; import com.android.settings.R; import com.android.settings.core.PreferenceControllerMixin; +import com.android.settings.datausage.lib.DataUsageLib; import com.android.settings.network.ProxySubscriptionManager; import com.android.settings.network.telephony.TelephonyBasePreferenceController; import com.android.settings.widget.EntityHeaderController; @@ -134,7 +135,7 @@ public class DataUsageSummaryPreferenceController extends TelephonyBasePreferenc if (subInfo != null) { mDataUsageTemplate = R.string.cell_data_template; - mDefaultTemplate = DataUsageUtils.getMobileTemplate(context, subscriptionId); + mDefaultTemplate = DataUsageLib.getMobileTemplate(context, subscriptionId); } else if (DataUsageUtils.hasWifiRadio(context)) { mDataUsageTemplate = R.string.wifi_data_template; mDefaultTemplate = NetworkTemplate.buildTemplateWifiWildcard(); diff --git a/src/com/android/settings/datausage/DataUsageUtils.java b/src/com/android/settings/datausage/DataUsageUtils.java index 6cdf210246..da0ca63b22 100644 --- a/src/com/android/settings/datausage/DataUsageUtils.java +++ b/src/com/android/settings/datausage/DataUsageUtils.java @@ -33,6 +33,7 @@ import android.text.format.Formatter; import android.text.format.Formatter.BytesResult; import android.util.Log; +import com.android.settings.datausage.lib.DataUsageLib; import com.android.settings.network.ProxySubscriptionManager; import java.util.List; @@ -183,7 +184,7 @@ public final class DataUsageUtils extends com.android.settingslib.net.DataUsageU */ public static NetworkTemplate getDefaultTemplate(Context context, int defaultSubId) { if (SubscriptionManager.isValidSubscriptionId(defaultSubId) && hasMobileData(context)) { - return getMobileTemplate(context, defaultSubId); + return DataUsageLib.getMobileTemplate(context, defaultSubId); } else if (hasWifiRadio(context)) { return NetworkTemplate.buildTemplateWifiWildcard(); } else { diff --git a/src/com/android/settings/datausage/lib/DataUsageLib.java b/src/com/android/settings/datausage/lib/DataUsageLib.java new file mode 100644 index 0000000000..cf2ce1fcf7 --- /dev/null +++ b/src/com/android/settings/datausage/lib/DataUsageLib.java @@ -0,0 +1,78 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings.datausage.lib; + +import android.content.Context; +import android.net.NetworkTemplate; +import android.telephony.SubscriptionInfo; +import android.telephony.SubscriptionManager; +import android.telephony.TelephonyManager; +import android.util.Log; + +import com.android.internal.util.ArrayUtils; + +import java.util.List; + +/** + * Lib class for data usage + */ +public class DataUsageLib { + private static final String TAG = "DataUsageLib"; + + /** + * Return mobile NetworkTemplate based on {@code subId} + */ + public static NetworkTemplate getMobileTemplate(Context context, int subId) { + final TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class); + final int mobileDefaultSubId = telephonyManager.getSubscriptionId(); + + final SubscriptionManager subscriptionManager = + context.getSystemService(SubscriptionManager.class); + final List<SubscriptionInfo> subInfoList = + subscriptionManager.getAvailableSubscriptionInfoList(); + if (subInfoList == null) { + Log.i(TAG, "Subscription is not inited: " + subId); + return getMobileTemplateForSubId(telephonyManager, mobileDefaultSubId); + } + + for (SubscriptionInfo subInfo : subInfoList) { + if ((subInfo != null) && (subInfo.getSubscriptionId() == subId)) { + return getNormalizedMobileTemplate(telephonyManager, subId); + } + } + Log.i(TAG, "Subscription is not active: " + subId); + return getMobileTemplateForSubId(telephonyManager, mobileDefaultSubId); + } + + private static NetworkTemplate getNormalizedMobileTemplate( + TelephonyManager telephonyManager, int subId) { + final NetworkTemplate mobileTemplate = getMobileTemplateForSubId(telephonyManager, subId); + final String[] mergedSubscriberIds = telephonyManager + .createForSubscriptionId(subId).getMergedImsisFromGroup(); + if (ArrayUtils.isEmpty(mergedSubscriberIds)) { + Log.i(TAG, "mergedSubscriberIds is null."); + return mobileTemplate; + } + + return NetworkTemplate.normalize(mobileTemplate, mergedSubscriberIds); + } + + private static NetworkTemplate getMobileTemplateForSubId( + TelephonyManager telephonyManager, int subId) { + return NetworkTemplate.buildTemplateMobileAll(telephonyManager.getSubscriberId(subId)); + } +} diff --git a/src/com/android/settings/network/telephony/DataUsagePreferenceController.java b/src/com/android/settings/network/telephony/DataUsagePreferenceController.java index 08524d67f8..40eb549308 100644 --- a/src/com/android/settings/network/telephony/DataUsagePreferenceController.java +++ b/src/com/android/settings/network/telephony/DataUsagePreferenceController.java @@ -29,6 +29,7 @@ import androidx.preference.Preference; import com.android.internal.annotations.VisibleForTesting; import com.android.settings.R; import com.android.settings.datausage.DataUsageUtils; +import com.android.settings.datausage.lib.DataUsageLib; import com.android.settingslib.net.DataUsageController; import com.android.settingslib.utils.ThreadUtils; @@ -99,7 +100,7 @@ public class DataUsagePreferenceController extends TelephonyBasePreferenceContro if (!SubscriptionManager.isValidSubscriptionId(subId)) { return null; } - return DataUsageUtils.getMobileTemplate(context, subId); + return DataUsageLib.getMobileTemplate(context, subId); } private NetworkTemplate getNetworkTemplate() { |