Merge "Iterate NetworkPolicy towards SubscriptionPlan."

This commit is contained in:
TreeHugger Robot
2017-07-15 19:57:01 +00:00
committed by Android (Google) Code Review
3 changed files with 41 additions and 31 deletions

View File

@@ -14,9 +14,10 @@
package com.android.settings.datausage; package com.android.settings.datausage;
import static android.net.NetworkPolicy.CYCLE_NONE;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.net.NetworkPolicy;
import android.net.NetworkTemplate; import android.net.NetworkTemplate;
import android.os.Bundle; import android.os.Bundle;
import android.os.RemoteException; import android.os.RemoteException;
@@ -32,7 +33,6 @@ public class BillingCyclePreference extends Preference implements TemplatePrefer
private NetworkTemplate mTemplate; private NetworkTemplate mTemplate;
private NetworkServices mServices; private NetworkServices mServices;
private NetworkPolicy mPolicy;
private int mSubId; private int mSubId;
public BillingCyclePreference(Context context, AttributeSet attrs) { public BillingCyclePreference(Context context, AttributeSet attrs) {
@@ -57,16 +57,18 @@ public class BillingCyclePreference extends Preference implements TemplatePrefer
mTemplate = template; mTemplate = template;
mSubId = subId; mSubId = subId;
mServices = services; mServices = services;
mPolicy = services.mPolicyEditor.getPolicy(mTemplate); final int cycleDay = services.mPolicyEditor.getPolicyCycleDay(mTemplate);
setSummary(getContext().getString(R.string.billing_cycle_fragment_summary, mPolicy != null if (cycleDay != CYCLE_NONE) {
? mPolicy.cycleDay setSummary(getContext().getString(R.string.billing_cycle_fragment_summary, cycleDay));
: "1")); } else {
setSummary(null);
}
setIntent(getIntent()); setIntent(getIntent());
} }
private void updateEnabled() { private void updateEnabled() {
try { try {
setEnabled(mPolicy != null && mServices.mNetworkService.isBandwidthControlEnabled() setEnabled(mServices.mNetworkService.isBandwidthControlEnabled()
&& mServices.mTelephonyManager.getDataEnabled(mSubId) && mServices.mTelephonyManager.getDataEnabled(mSubId)
&& mServices.mUserManager.isAdminUser()); && mServices.mUserManager.isAdminUser());
} catch (RemoteException e) { } catch (RemoteException e) {

View File

@@ -14,9 +14,12 @@
package com.android.settings.datausage; package com.android.settings.datausage;
import static android.net.NetworkPolicy.CYCLE_NONE;
import static android.net.NetworkPolicy.LIMIT_DISABLED;
import static android.net.NetworkPolicy.WARNING_DISABLED;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.app.Dialog; import android.app.Dialog;
import android.app.DialogFragment;
import android.app.Fragment; import android.app.Fragment;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
@@ -45,9 +48,6 @@ import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settingslib.NetworkPolicyEditor; import com.android.settingslib.NetworkPolicyEditor;
import com.android.settingslib.net.DataUsageController; import com.android.settingslib.net.DataUsageController;
import static android.net.NetworkPolicy.LIMIT_DISABLED;
import static android.net.NetworkPolicy.WARNING_DISABLED;
public class BillingCycleSettings extends DataUsageBase implements public class BillingCycleSettings extends DataUsageBase implements
Preference.OnPreferenceChangeListener, DataUsageEditController { Preference.OnPreferenceChangeListener, DataUsageEditController {
@@ -103,11 +103,15 @@ public class BillingCycleSettings extends DataUsageBase implements
} }
private void updatePrefs() { private void updatePrefs() {
NetworkPolicy policy = services.mPolicyEditor.getPolicy(mNetworkTemplate); final int cycleDay = services.mPolicyEditor.getPolicyCycleDay(mNetworkTemplate);
mBillingCycle.setSummary(getString(R.string.billing_cycle_fragment_summary, policy != null ? if (cycleDay != CYCLE_NONE) {
policy.cycleDay : 1)); mBillingCycle.setSummary(getString(R.string.billing_cycle_fragment_summary, cycleDay));
if (policy != null && policy.warningBytes != WARNING_DISABLED) { } else {
mDataWarning.setSummary(Formatter.formatFileSize(getContext(), policy.warningBytes)); mBillingCycle.setSummary(null);
}
final long warningBytes = services.mPolicyEditor.getPolicyWarningBytes(mNetworkTemplate);
if (warningBytes != WARNING_DISABLED) {
mDataWarning.setSummary(Formatter.formatFileSize(getContext(), warningBytes));
mDataWarning.setEnabled(true); mDataWarning.setEnabled(true);
mEnableDataWarning.setChecked(true); mEnableDataWarning.setChecked(true);
} else { } else {
@@ -115,8 +119,9 @@ public class BillingCycleSettings extends DataUsageBase implements
mDataWarning.setEnabled(false); mDataWarning.setEnabled(false);
mEnableDataWarning.setChecked(false); mEnableDataWarning.setChecked(false);
} }
if (policy != null && policy.limitBytes != LIMIT_DISABLED) { final long limitBytes = services.mPolicyEditor.getPolicyWarningBytes(mNetworkTemplate);
mDataLimit.setSummary(Formatter.formatFileSize(getContext(), policy.limitBytes)); if (limitBytes != LIMIT_DISABLED) {
mDataLimit.setSummary(Formatter.formatFileSize(getContext(), limitBytes));
mDataLimit.setEnabled(true); mDataLimit.setEnabled(true);
mEnableDataLimit.setChecked(true); mEnableDataLimit.setChecked(true);
} else { } else {
@@ -319,7 +324,7 @@ public class BillingCycleSettings extends DataUsageBase implements
} }
/** /**
* Dialog to edit {@link NetworkPolicy#cycleDay}. * Dialog to edit {@link NetworkPolicy}.
*/ */
public static class CycleEditorFragment extends InstrumentedDialogFragment implements public static class CycleEditorFragment extends InstrumentedDialogFragment implements
DialogInterface.OnClickListener { DialogInterface.OnClickListener {

View File

@@ -15,17 +15,21 @@ package com.android.settings.datausage;
import android.content.Context; import android.content.Context;
import android.net.NetworkPolicy; import android.net.NetworkPolicy;
import android.net.NetworkPolicyManager;
import android.net.NetworkStatsHistory; import android.net.NetworkStatsHistory;
import android.text.format.DateUtils; import android.text.format.DateUtils;
import android.util.Pair;
import android.widget.AdapterView; import android.widget.AdapterView;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.Utils; import com.android.settings.Utils;
import com.android.settingslib.net.ChartData; import com.android.settingslib.net.ChartData;
import libcore.util.Objects; import libcore.util.Objects;
import static android.net.NetworkPolicyManager.computeLastCycleBoundary; import java.time.ZonedDateTime;
import static android.net.NetworkPolicyManager.computeNextCycleBoundary; import java.util.Iterator;
public class CycleAdapter extends ArrayAdapter<CycleAdapter.CycleItem> { public class CycleAdapter extends ArrayAdapter<CycleAdapter.CycleItem> {
@@ -61,9 +65,9 @@ public class CycleAdapter extends ArrayAdapter<CycleAdapter.CycleItem> {
} }
/** /**
* Rebuild list based on {@link NetworkPolicy#cycleDay} * Rebuild list based on {@link NetworkPolicy} and available
* and available {@link NetworkStatsHistory} data. Always selects the newest * {@link NetworkStatsHistory} data. Always selects the newest item,
* item, updating the inspection range on chartData. * updating the inspection range on chartData.
*/ */
public boolean updateCycleList(NetworkPolicy policy, ChartData chartData) { public boolean updateCycleList(NetworkPolicy policy, ChartData chartData) {
// stash away currently selected cycle to try restoring below // stash away currently selected cycle to try restoring below
@@ -87,12 +91,12 @@ public class CycleAdapter extends ArrayAdapter<CycleAdapter.CycleItem> {
boolean hasCycles = false; boolean hasCycles = false;
if (policy != null) { if (policy != null) {
// find the next cycle boundary final Iterator<Pair<ZonedDateTime, ZonedDateTime>> it = NetworkPolicyManager
long cycleEnd = computeNextCycleBoundary(historyEnd, policy); .cycleIterator(policy);
while (it.hasNext()) {
// walk backwards, generating all valid cycle ranges final Pair<ZonedDateTime, ZonedDateTime> cycle = it.next();
while (cycleEnd > historyStart) { final long cycleStart = cycle.first.toInstant().toEpochMilli();
final long cycleStart = computeLastCycleBoundary(cycleEnd, policy); final long cycleEnd = cycle.second.toInstant().toEpochMilli();
final boolean includeCycle; final boolean includeCycle;
if (chartData != null) { if (chartData != null) {
@@ -106,7 +110,6 @@ public class CycleAdapter extends ArrayAdapter<CycleAdapter.CycleItem> {
add(new CycleAdapter.CycleItem(context, cycleStart, cycleEnd)); add(new CycleAdapter.CycleItem(context, cycleStart, cycleEnd));
hasCycles = true; hasCycles = true;
} }
cycleEnd = cycleStart;
} }
} }