Merge "Iterate NetworkPolicy towards SubscriptionPlan."
This commit is contained in:
committed by
Android (Google) Code Review
commit
8a5a1b7419
@@ -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) {
|
||||||
|
@@ -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 {
|
||||||
|
@@ -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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user