[Settings] Access ProxySubscriptionManager within DataUsage

Redirect some SubscriptionManager access to ProxySubscriptionManager.
This will reduce some access latency.

Bug: 141833767
Test: manual
Test: m RunSettingsRoboTests -j ROBOTEST_FILTER=DataUsageSummaryPreferenceControllerTest
Change-Id: I2cb30dd0570a09543a13ca01cf054ba2d18d70d4
This commit is contained in:
Bonian Chen
2020-02-10 23:49:53 +08:00
parent d4e2f78d9a
commit dcd92af0a1
2 changed files with 25 additions and 15 deletions

View File

@@ -40,6 +40,7 @@ import com.android.internal.util.CollectionUtils;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.core.BasePreferenceController; import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.network.ProxySubscriptionManager;
import com.android.settings.widget.EntityHeaderController; import com.android.settings.widget.EntityHeaderController;
import com.android.settingslib.NetworkPolicyEditor; import com.android.settingslib.NetworkPolicyEditor;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
@@ -117,8 +118,8 @@ public class DataUsageSummaryPreferenceController extends BasePreferenceControll
NetworkPolicyManager policyManager = activity.getSystemService(NetworkPolicyManager.class); NetworkPolicyManager policyManager = activity.getSystemService(NetworkPolicyManager.class);
mPolicyEditor = new NetworkPolicyEditor(policyManager); mPolicyEditor = new NetworkPolicyEditor(policyManager);
mHasMobileData = DataUsageUtils.hasMobileData(activity) mHasMobileData = SubscriptionManager.isValidSubscriptionId(mSubscriptionId)
&& mSubscriptionId != SubscriptionManager.INVALID_SUBSCRIPTION_ID; && DataUsageUtils.hasMobileData(activity);
mDataUsageController = new DataUsageController(activity); mDataUsageController = new DataUsageController(activity);
mDataUsageController.setSubscriptionId(mSubscriptionId); mDataUsageController.setSubscriptionId(mSubscriptionId);
@@ -270,11 +271,10 @@ public class DataUsageSummaryPreferenceController extends BasePreferenceControll
mCycleEnd = info.cycleEnd; mCycleEnd = info.cycleEnd;
mSnapshotTime = -1L; mSnapshotTime = -1L;
SubscriptionInfo subInfo = mSubscriptionManager.getActiveSubscriptionInfo(mSubscriptionId); final ProxySubscriptionManager proxySubsciptionMgr =
if (subInfo == null) { ProxySubscriptionManager.getInstance(mContext);
subInfo = mSubscriptionManager.getAvailableSubscriptionInfoList().stream().filter( final SubscriptionInfo subInfo = proxySubsciptionMgr
i -> i.getSubscriptionId() == mSubscriptionId).findFirst().orElse(null); .getAccessibleSubscriptionInfo(mSubscriptionId);
}
if (subInfo != null && mHasMobileData) { if (subInfo != null && mHasMobileData) {
mCarrierName = subInfo.getCarrierName(); mCarrierName = subInfo.getCarrierName();
List<SubscriptionPlan> plans = mSubscriptionManager.getSubscriptionPlans( List<SubscriptionPlan> plans = mSubscriptionManager.getSubscriptionPlans(

View File

@@ -33,6 +33,8 @@ import android.text.format.Formatter;
import android.text.format.Formatter.BytesResult; import android.text.format.Formatter.BytesResult;
import android.util.Log; import android.util.Log;
import com.android.settings.network.ProxySubscriptionManager;
import java.util.List; import java.util.List;
/** /**
@@ -107,8 +109,8 @@ public final class DataUsageUtils extends com.android.settingslib.net.DataUsageU
return SystemProperties.get(DataUsageUtils.TEST_RADIOS_PROP).contains("mobile"); return SystemProperties.get(DataUsageUtils.TEST_RADIOS_PROP).contains("mobile");
} }
final List<SubscriptionInfo> subInfoList = final List<SubscriptionInfo> subInfoList =
context.getSystemService(SubscriptionManager.class) ProxySubscriptionManager.getInstance(context)
.getActiveSubscriptionInfoList(); .getActiveSubscriptionsInfo();
// No activated Subscriptions // No activated Subscriptions
if (subInfoList == null) { if (subInfoList == null) {
if (LOGD) { if (LOGD) {
@@ -150,6 +152,14 @@ public final class DataUsageUtils extends com.android.settingslib.net.DataUsageU
} }
public static boolean hasSim(Context context) { public static boolean hasSim(Context context) {
// Access cache within ProxySubscriptionManager to speed up
final List<SubscriptionInfo> subInfoList =
ProxySubscriptionManager.getInstance(context)
.getActiveSubscriptionsInfo();
if ((subInfoList != null) && (subInfoList.size() > 0)) {
return true;
}
TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class); TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class);
final int simState = telephonyManager.getSimState(); final int simState = telephonyManager.getSimState();
// Note that pulling the SIM card returns UNKNOWN, not ABSENT. // Note that pulling the SIM card returns UNKNOWN, not ABSENT.
@@ -162,20 +172,20 @@ public final class DataUsageUtils extends com.android.settingslib.net.DataUsageU
* SubscriptionManager#INVALID_SUBSCRIPTION_ID * SubscriptionManager#INVALID_SUBSCRIPTION_ID
*/ */
public static int getDefaultSubscriptionId(Context context) { public static int getDefaultSubscriptionId(Context context) {
final SubscriptionManager subscriptionMgr =
context.getSystemService(SubscriptionManager.class);
// default data subscription is first choice // default data subscription is first choice
final int dataSubId = subscriptionMgr.getDefaultDataSubscriptionId(); final int dataSubId = SubscriptionManager.getDefaultDataSubscriptionId();
if (SubscriptionManager.isValidSubscriptionId(dataSubId)) { if (SubscriptionManager.isValidSubscriptionId(dataSubId)) {
return dataSubId; return dataSubId;
} }
final ProxySubscriptionManager proxySubscriptionMgr =
ProxySubscriptionManager.getInstance(context);
// any active subscription is second choice // any active subscription is second choice
List<SubscriptionInfo> subList = subscriptionMgr.getActiveSubscriptionInfoList(); List<SubscriptionInfo> subList = proxySubscriptionMgr.getActiveSubscriptionsInfo();
if ((subList == null) || (subList.size() <= 0)) { if ((subList == null) || (subList.size() <= 0)) {
// any subscription is third choice // any subscription is third choice
subList = subscriptionMgr.getAvailableSubscriptionInfoList(); subList = proxySubscriptionMgr.getAccessibleSubscriptionsInfo();
} }
if ((subList == null) || (subList.size() <= 0)) { if ((subList == null) || (subList.size() <= 0)) {
return SubscriptionManager.INVALID_SUBSCRIPTION_ID; return SubscriptionManager.INVALID_SUBSCRIPTION_ID;