Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 837f9242 authored by Jeff Sharkey's avatar Jeff Sharkey
Browse files

Remember when NetworkPolicy was inferred.

This helps future-proof NPMS if we need to correct default policies
after an upgrade.

Change-Id: I0ddfdeaf41757a46aeb867c91d495ccf981d544b
parent edc84ee8
Loading
Loading
Loading
Loading
+10 −4
Original line number Original line Diff line number Diff line
@@ -42,18 +42,20 @@ public class NetworkPolicy implements Parcelable, Comparable<NetworkPolicy> {
    public long lastWarningSnooze;
    public long lastWarningSnooze;
    public long lastLimitSnooze;
    public long lastLimitSnooze;
    public boolean metered;
    public boolean metered;
    public boolean inferred;


    private static final long DEFAULT_MTU = 1500;
    private static final long DEFAULT_MTU = 1500;


    @Deprecated
    public NetworkPolicy(NetworkTemplate template, int cycleDay, String cycleTimezone,
    public NetworkPolicy(NetworkTemplate template, int cycleDay, String cycleTimezone,
            long warningBytes, long limitBytes, boolean metered) {
            long warningBytes, long limitBytes, boolean metered) {
        this(template, cycleDay, cycleTimezone, warningBytes, limitBytes, SNOOZE_NEVER,
        this(template, cycleDay, cycleTimezone, warningBytes, limitBytes, SNOOZE_NEVER,
                SNOOZE_NEVER, metered);
                SNOOZE_NEVER, metered, false);
    }
    }


    public NetworkPolicy(NetworkTemplate template, int cycleDay, String cycleTimezone,
    public NetworkPolicy(NetworkTemplate template, int cycleDay, String cycleTimezone,
            long warningBytes, long limitBytes, long lastWarningSnooze, long lastLimitSnooze,
            long warningBytes, long limitBytes, long lastWarningSnooze, long lastLimitSnooze,
            boolean metered) {
            boolean metered, boolean inferred) {
        this.template = checkNotNull(template, "missing NetworkTemplate");
        this.template = checkNotNull(template, "missing NetworkTemplate");
        this.cycleDay = cycleDay;
        this.cycleDay = cycleDay;
        this.cycleTimezone = checkNotNull(cycleTimezone, "missing cycleTimezone");
        this.cycleTimezone = checkNotNull(cycleTimezone, "missing cycleTimezone");
@@ -62,6 +64,7 @@ public class NetworkPolicy implements Parcelable, Comparable<NetworkPolicy> {
        this.lastWarningSnooze = lastWarningSnooze;
        this.lastWarningSnooze = lastWarningSnooze;
        this.lastLimitSnooze = lastLimitSnooze;
        this.lastLimitSnooze = lastLimitSnooze;
        this.metered = metered;
        this.metered = metered;
        this.inferred = inferred;
    }
    }


    public NetworkPolicy(Parcel in) {
    public NetworkPolicy(Parcel in) {
@@ -73,6 +76,7 @@ public class NetworkPolicy implements Parcelable, Comparable<NetworkPolicy> {
        lastWarningSnooze = in.readLong();
        lastWarningSnooze = in.readLong();
        lastLimitSnooze = in.readLong();
        lastLimitSnooze = in.readLong();
        metered = in.readInt() != 0;
        metered = in.readInt() != 0;
        inferred = in.readInt() != 0;
    }
    }


    @Override
    @Override
@@ -85,6 +89,7 @@ public class NetworkPolicy implements Parcelable, Comparable<NetworkPolicy> {
        dest.writeLong(lastWarningSnooze);
        dest.writeLong(lastWarningSnooze);
        dest.writeLong(lastLimitSnooze);
        dest.writeLong(lastLimitSnooze);
        dest.writeInt(metered ? 1 : 0);
        dest.writeInt(metered ? 1 : 0);
        dest.writeInt(inferred ? 1 : 0);
    }
    }


    @Override
    @Override
@@ -134,7 +139,7 @@ public class NetworkPolicy implements Parcelable, Comparable<NetworkPolicy> {
    @Override
    @Override
    public int hashCode() {
    public int hashCode() {
        return Objects.hashCode(template, cycleDay, cycleTimezone, warningBytes, limitBytes,
        return Objects.hashCode(template, cycleDay, cycleTimezone, warningBytes, limitBytes,
                lastWarningSnooze, lastLimitSnooze, metered);
                lastWarningSnooze, lastLimitSnooze, metered, inferred);
    }
    }


    @Override
    @Override
@@ -145,6 +150,7 @@ public class NetworkPolicy implements Parcelable, Comparable<NetworkPolicy> {
                    && limitBytes == other.limitBytes
                    && limitBytes == other.limitBytes
                    && lastWarningSnooze == other.lastWarningSnooze
                    && lastWarningSnooze == other.lastWarningSnooze
                    && lastLimitSnooze == other.lastLimitSnooze && metered == other.metered
                    && lastLimitSnooze == other.lastLimitSnooze && metered == other.metered
                    && inferred == other.inferred
                    && Objects.equal(cycleTimezone, other.cycleTimezone)
                    && Objects.equal(cycleTimezone, other.cycleTimezone)
                    && Objects.equal(template, other.template);
                    && Objects.equal(template, other.template);
        }
        }
@@ -156,7 +162,7 @@ public class NetworkPolicy implements Parcelable, Comparable<NetworkPolicy> {
        return "NetworkPolicy[" + template + "]: cycleDay=" + cycleDay + ", cycleTimezone="
        return "NetworkPolicy[" + template + "]: cycleDay=" + cycleDay + ", cycleTimezone="
                + cycleTimezone + ", warningBytes=" + warningBytes + ", limitBytes=" + limitBytes
                + cycleTimezone + ", warningBytes=" + warningBytes + ", limitBytes=" + limitBytes
                + ", lastWarningSnooze=" + lastWarningSnooze + ", lastLimitSnooze="
                + ", lastWarningSnooze=" + lastWarningSnooze + ", lastLimitSnooze="
                + lastLimitSnooze + ", metered=" + metered;
                + lastLimitSnooze + ", metered=" + metered + ", inferred=" + inferred;
    }
    }


    public static final Creator<NetworkPolicy> CREATOR = new Creator<NetworkPolicy>() {
    public static final Creator<NetworkPolicy> CREATOR = new Creator<NetworkPolicy>() {
+12 −3
Original line number Original line Diff line number Diff line
@@ -157,6 +157,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
    private static final int VERSION_ADDED_METERED = 4;
    private static final int VERSION_ADDED_METERED = 4;
    private static final int VERSION_SPLIT_SNOOZE = 5;
    private static final int VERSION_SPLIT_SNOOZE = 5;
    private static final int VERSION_ADDED_TIMEZONE = 6;
    private static final int VERSION_ADDED_TIMEZONE = 6;
    private static final int VERSION_ADDED_INFERRED = 7;


    // @VisibleForTesting
    // @VisibleForTesting
    public static final int TYPE_WARNING = 0x1;
    public static final int TYPE_WARNING = 0x1;
@@ -179,6 +180,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
    private static final String ATTR_LAST_WARNING_SNOOZE = "lastWarningSnooze";
    private static final String ATTR_LAST_WARNING_SNOOZE = "lastWarningSnooze";
    private static final String ATTR_LAST_LIMIT_SNOOZE = "lastLimitSnooze";
    private static final String ATTR_LAST_LIMIT_SNOOZE = "lastLimitSnooze";
    private static final String ATTR_METERED = "metered";
    private static final String ATTR_METERED = "metered";
    private static final String ATTR_INFERRED = "inferred";
    private static final String ATTR_UID = "uid";
    private static final String ATTR_UID = "uid";
    private static final String ATTR_POLICY = "policy";
    private static final String ATTR_POLICY = "policy";


@@ -932,7 +934,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {


            final NetworkTemplate template = buildTemplateMobileAll(subscriberId);
            final NetworkTemplate template = buildTemplateMobileAll(subscriberId);
            mNetworkPolicy.put(template, new NetworkPolicy(template, cycleDay, cycleTimezone,
            mNetworkPolicy.put(template, new NetworkPolicy(template, cycleDay, cycleTimezone,
                    warningBytes, LIMIT_DISABLED, SNOOZE_NEVER, SNOOZE_NEVER, true));
                    warningBytes, LIMIT_DISABLED, SNOOZE_NEVER, SNOOZE_NEVER, true, true));
            writePolicyLocked();
            writePolicyLocked();
        }
        }
    }
    }
@@ -1004,12 +1006,18 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
                        } else {
                        } else {
                            lastWarningSnooze = SNOOZE_NEVER;
                            lastWarningSnooze = SNOOZE_NEVER;
                        }
                        }
                        final boolean inferred;
                        if (version >= VERSION_ADDED_INFERRED) {
                            inferred = readBooleanAttribute(in, ATTR_INFERRED);
                        } else {
                            inferred = false;
                        }


                        final NetworkTemplate template = new NetworkTemplate(
                        final NetworkTemplate template = new NetworkTemplate(
                                networkTemplate, subscriberId);
                                networkTemplate, subscriberId);
                        mNetworkPolicy.put(template, new NetworkPolicy(template, cycleDay,
                        mNetworkPolicy.put(template, new NetworkPolicy(template, cycleDay,
                                cycleTimezone, warningBytes, limitBytes, lastWarningSnooze,
                                cycleTimezone, warningBytes, limitBytes, lastWarningSnooze,
                                lastLimitSnooze, metered));
                                lastLimitSnooze, metered, inferred));


                    } else if (TAG_UID_POLICY.equals(tag)) {
                    } else if (TAG_UID_POLICY.equals(tag)) {
                        final int uid = readIntAttribute(in, ATTR_UID);
                        final int uid = readIntAttribute(in, ATTR_UID);
@@ -1064,7 +1072,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
            out.startDocument(null, true);
            out.startDocument(null, true);


            out.startTag(null, TAG_POLICY_LIST);
            out.startTag(null, TAG_POLICY_LIST);
            writeIntAttribute(out, ATTR_VERSION, VERSION_ADDED_TIMEZONE);
            writeIntAttribute(out, ATTR_VERSION, VERSION_ADDED_INFERRED);
            writeBooleanAttribute(out, ATTR_RESTRICT_BACKGROUND, mRestrictBackground);
            writeBooleanAttribute(out, ATTR_RESTRICT_BACKGROUND, mRestrictBackground);


            // write all known network policies
            // write all known network policies
@@ -1084,6 +1092,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
                writeLongAttribute(out, ATTR_LAST_WARNING_SNOOZE, policy.lastWarningSnooze);
                writeLongAttribute(out, ATTR_LAST_WARNING_SNOOZE, policy.lastWarningSnooze);
                writeLongAttribute(out, ATTR_LAST_LIMIT_SNOOZE, policy.lastLimitSnooze);
                writeLongAttribute(out, ATTR_LAST_LIMIT_SNOOZE, policy.lastLimitSnooze);
                writeBooleanAttribute(out, ATTR_METERED, policy.metered);
                writeBooleanAttribute(out, ATTR_METERED, policy.metered);
                writeBooleanAttribute(out, ATTR_INFERRED, policy.inferred);
                out.endTag(null, TAG_NETWORK_POLICY);
                out.endTag(null, TAG_NETWORK_POLICY);
            }
            }