[Settings] Adopt TelephonyBasePreferenceController to data usage

Adopt TelephonyBasePreferenceController in order to better support DSDS.

Bug: 151751844
Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=DataUsageSummaryPreferenceControllerTest
Change-Id: I502b93f01b289b72989ad3167131cc0c598b1583
This commit is contained in:
Bonian Chen
2020-04-22 12:32:02 +08:00
parent 8f26e88bd9
commit 1a8d501d7d

View File

@@ -38,9 +38,9 @@ import androidx.recyclerview.widget.RecyclerView;
import com.android.internal.util.CollectionUtils; 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.PreferenceControllerMixin; import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.network.ProxySubscriptionManager; import com.android.settings.network.ProxySubscriptionManager;
import com.android.settings.network.telephony.TelephonyBasePreferenceController;
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;
@@ -55,7 +55,7 @@ import java.util.List;
* subscriptions framework API if available. The controller reads subscription information from the * subscriptions framework API if available. The controller reads subscription information from the
* framework and falls back to legacy usage data if none are available. * framework and falls back to legacy usage data if none are available.
*/ */
public class DataUsageSummaryPreferenceController extends BasePreferenceController public class DataUsageSummaryPreferenceController extends TelephonyBasePreferenceController
implements PreferenceControllerMixin, LifecycleObserver, OnStart { implements PreferenceControllerMixin, LifecycleObserver, OnStart {
private static final String TAG = "DataUsageController"; private static final String TAG = "DataUsageController";
@@ -64,7 +64,6 @@ public class DataUsageSummaryPreferenceController extends BasePreferenceControll
private static final float RELATIVE_SIZE_LARGE = 1.25f * 1.25f; // (1/0.8)^2 private static final float RELATIVE_SIZE_LARGE = 1.25f * 1.25f; // (1/0.8)^2
private static final float RELATIVE_SIZE_SMALL = 1.0f / RELATIVE_SIZE_LARGE; // 0.8^2 private static final float RELATIVE_SIZE_SMALL = 1.0f / RELATIVE_SIZE_LARGE; // 0.8^2
private final Activity mActivity;
private final EntityHeaderController mEntityHeaderController; private final EntityHeaderController mEntityHeaderController;
private final Lifecycle mLifecycle; private final Lifecycle mLifecycle;
private final PreferenceFragmentCompat mFragment; private final PreferenceFragmentCompat mFragment;
@@ -97,8 +96,6 @@ public class DataUsageSummaryPreferenceController extends BasePreferenceControll
private long mCycleStart; private long mCycleStart;
/** The ending time of the billing cycle in ms since the epoch */ /** The ending time of the billing cycle in ms since the epoch */
private long mCycleEnd; private long mCycleEnd;
/** The subscription that we should show usage for. */
private int mSubscriptionId;
private Intent mManageSubscriptionIntent; private Intent mManageSubscriptionIntent;
@@ -106,7 +103,6 @@ public class DataUsageSummaryPreferenceController extends BasePreferenceControll
Lifecycle lifecycle, PreferenceFragmentCompat fragment, int subscriptionId) { Lifecycle lifecycle, PreferenceFragmentCompat fragment, int subscriptionId) {
super(activity, KEY); super(activity, KEY);
mActivity = activity;
mEntityHeaderController = EntityHeaderController.newInstance(activity, mEntityHeaderController = EntityHeaderController.newInstance(activity,
fragment, null); fragment, null);
mLifecycle = lifecycle; mLifecycle = lifecycle;
@@ -119,18 +115,18 @@ public class DataUsageSummaryPreferenceController extends BasePreferenceControll
* @param subscriptionId is the target subscriptionId * @param subscriptionId is the target subscriptionId
*/ */
public void init(int subscriptionId) { public void init(int subscriptionId) {
mSubscriptionId = subscriptionId; mSubId = subscriptionId;
mDefaultTemplate = DataUsageUtils.getDefaultTemplate(mContext, mSubscriptionId); mDefaultTemplate = DataUsageUtils.getDefaultTemplate(mContext, mSubId);
final NetworkPolicyManager policyManager = final NetworkPolicyManager policyManager =
mContext.getSystemService(NetworkPolicyManager.class); mContext.getSystemService(NetworkPolicyManager.class);
mPolicyEditor = new NetworkPolicyEditor(policyManager); mPolicyEditor = new NetworkPolicyEditor(policyManager);
mHasMobileData = SubscriptionManager.isValidSubscriptionId(mSubscriptionId) mHasMobileData = SubscriptionManager.isValidSubscriptionId(mSubId)
&& DataUsageUtils.hasMobileData(mContext); && DataUsageUtils.hasMobileData(mContext);
mDataUsageController = new DataUsageController(mContext); mDataUsageController = new DataUsageController(mContext);
mDataUsageController.setSubscriptionId(mSubscriptionId); mDataUsageController.setSubscriptionId(mSubId);
mDataInfoController = new DataUsageInfoController(); mDataInfoController = new DataUsageInfoController();
if (mHasMobileData) { if (mHasMobileData) {
@@ -161,18 +157,17 @@ public class DataUsageSummaryPreferenceController extends BasePreferenceControll
mPolicyEditor = policyEditor; mPolicyEditor = policyEditor;
mDataUsageTemplate = dataUsageTemplate; mDataUsageTemplate = dataUsageTemplate;
mHasMobileData = true; mHasMobileData = true;
mActivity = activity;
mLifecycle = lifecycle; mLifecycle = lifecycle;
mEntityHeaderController = entityHeaderController; mEntityHeaderController = entityHeaderController;
mFragment = fragment; mFragment = fragment;
mSubscriptionId = subscriptionId; mSubId = subscriptionId;
} }
@Override @Override
public void onStart() { public void onStart() {
RecyclerView view = mFragment.getListView(); RecyclerView view = mFragment.getListView();
mEntityHeaderController.setRecyclerView(view, mLifecycle); mEntityHeaderController.setRecyclerView(view, mLifecycle);
mEntityHeaderController.styleActionBar(mActivity); mEntityHeaderController.styleActionBar((Activity) mContext);
} }
@VisibleForTesting @VisibleForTesting
@@ -193,7 +188,7 @@ public class DataUsageSummaryPreferenceController extends BasePreferenceControll
} }
@Override @Override
public int getAvailabilityStatus() { public int getAvailabilityStatus(int subId) {
return hasSim() return hasSim()
|| DataUsageUtils.hasWifiRadio(mContext) ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; || DataUsageUtils.hasWifiRadio(mContext) ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
} }
@@ -203,7 +198,7 @@ public class DataUsageSummaryPreferenceController extends BasePreferenceControll
DataUsageSummaryPreference summaryPreference = (DataUsageSummaryPreference) preference; DataUsageSummaryPreference summaryPreference = (DataUsageSummaryPreference) preference;
final DataUsageController.DataUsageInfo info; final DataUsageController.DataUsageInfo info;
final SubscriptionInfo subInfo = getSubscriptionInfo(mSubscriptionId); final SubscriptionInfo subInfo = getSubscriptionInfo(mSubId);
if (hasSim()) { if (hasSim()) {
info = mDataUsageController.getDataUsageInfo(mDefaultTemplate); info = mDataUsageController.getDataUsageInfo(mDefaultTemplate);
mDataInfoController.updateDataLimit(info, mPolicyEditor.getPolicy(mDefaultTemplate)); mDataInfoController.updateDataLimit(info, mPolicyEditor.getPolicy(mDefaultTemplate));
@@ -276,7 +271,7 @@ public class DataUsageSummaryPreferenceController extends BasePreferenceControll
if (subInfo != null && mHasMobileData) { if (subInfo != null && mHasMobileData) {
mCarrierName = subInfo.getCarrierName(); mCarrierName = subInfo.getCarrierName();
final List<SubscriptionPlan> plans = getSubscriptionPlans(mSubscriptionId); final List<SubscriptionPlan> plans = getSubscriptionPlans(mSubId);
final SubscriptionPlan primaryPlan = getPrimaryPlan(plans); final SubscriptionPlan primaryPlan = getPrimaryPlan(plans);
if (primaryPlan != null) { if (primaryPlan != null) {
@@ -296,8 +291,8 @@ public class DataUsageSummaryPreferenceController extends BasePreferenceControll
mSnapshotTime = primaryPlan.getDataUsageTime(); mSnapshotTime = primaryPlan.getDataUsageTime();
} }
} }
mManageSubscriptionIntent = createManageSubscriptionIntent(mSubscriptionId); mManageSubscriptionIntent = createManageSubscriptionIntent(mSubId);
Log.i(TAG, "Have " + mDataplanCount + " plans, dflt sub-id " + mSubscriptionId Log.i(TAG, "Have " + mDataplanCount + " plans, dflt sub-id " + mSubId
+ ", intent " + mManageSubscriptionIntent); + ", intent " + mManageSubscriptionIntent);
} }
@@ -334,7 +329,7 @@ public class DataUsageSummaryPreferenceController extends BasePreferenceControll
intent.setPackage(owner); intent.setPackage(owner);
intent.putExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX, subId); intent.putExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX, subId);
if (mActivity.getPackageManager().queryIntentActivities(intent, if (mContext.getPackageManager().queryIntentActivities(intent,
PackageManager.MATCH_DEFAULT_ONLY).isEmpty()) { PackageManager.MATCH_DEFAULT_ONLY).isEmpty()) {
return null; return null;
} }