diff options
| author | Ritesh Reddy <riteshr@google.com> | 2016-02-10 19:37:17 +0000 |
|---|---|---|
| committer | Android Partner Code Review <android-gerrit-partner@google.com> | 2016-02-10 19:37:17 +0000 |
| commit | d9c4bc0c4db7a8b16d8ea0f58ed0615efc167f47 (patch) | |
| tree | ac459d1127a3d8d3901b239ce3be395ee977142d /core/java/android | |
| parent | c4a1188afd81b4b773e30ec184839bc1a82b355d (diff) | |
| parent | adca34a0d6b5955f0cbc931dd0834b25fe3759b9 (diff) | |
Merge "Enabled Network Policy Backup/Restore." into mm-wireless-dev
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/net/NetworkPolicy.java | 47 | ||||
| -rw-r--r-- | core/java/android/net/NetworkTemplate.java | 37 |
2 files changed, 84 insertions, 0 deletions
diff --git a/core/java/android/net/NetworkPolicy.java b/core/java/android/net/NetworkPolicy.java index e88bc26851e7..9870e7b6fa0c 100644 --- a/core/java/android/net/NetworkPolicy.java +++ b/core/java/android/net/NetworkPolicy.java @@ -20,7 +20,12 @@ import static com.android.internal.util.Preconditions.checkNotNull; import android.os.Parcel; import android.os.Parcelable; +import android.util.BackupUtils; +import java.io.ByteArrayOutputStream; +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; import java.util.Objects; /** @@ -30,6 +35,11 @@ import java.util.Objects; * @hide */ public class NetworkPolicy implements Parcelable, Comparable<NetworkPolicy> { + /** + * Current Version of the Backup Serializer. + */ + private static final int BACKUP_VERSION = 1; + public static final int CYCLE_NONE = -1; public static final long WARNING_DISABLED = -1; public static final long LIMIT_DISABLED = -1; @@ -191,4 +201,41 @@ public class NetworkPolicy implements Parcelable, Comparable<NetworkPolicy> { return new NetworkPolicy[size]; } }; + + public byte[] getBytesForBackup() throws IOException { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + DataOutputStream out = new DataOutputStream(baos); + + out.writeInt(BACKUP_VERSION); + out.write(template.getBytesForBackup()); + out.writeInt(cycleDay); + BackupUtils.writeString(out, cycleTimezone); + out.writeLong(warningBytes); + out.writeLong(limitBytes); + out.writeLong(lastWarningSnooze); + out.writeLong(lastLimitSnooze); + out.writeInt(metered ? 1 : 0); + out.writeInt(inferred ? 1 : 0); + return baos.toByteArray(); + } + + public static NetworkPolicy getNetworkPolicyFromBackup(DataInputStream in) throws IOException, + BackupUtils.BadVersionException { + int version = in.readInt(); + if (version < 1 || version > BACKUP_VERSION) { + throw new BackupUtils.BadVersionException("Unknown Backup Serialization Version"); + } + + NetworkTemplate template = NetworkTemplate.getNetworkTemplateFromBackup(in); + int cycleDay = in.readInt(); + String cycleTimeZone = BackupUtils.readString(in); + long warningBytes = in.readLong(); + long limitBytes = in.readLong(); + long lastWarningSnooze = in.readLong(); + long lastLimitSnooze = in.readLong(); + boolean metered = in.readInt() == 1; + boolean inferred = in.readInt() == 1; + return new NetworkPolicy(template, cycleDay, cycleTimeZone, warningBytes, limitBytes, + lastWarningSnooze, lastLimitSnooze, metered, inferred); + } } diff --git a/core/java/android/net/NetworkTemplate.java b/core/java/android/net/NetworkTemplate.java index b7a411e4b646..5761d66dde87 100644 --- a/core/java/android/net/NetworkTemplate.java +++ b/core/java/android/net/NetworkTemplate.java @@ -28,15 +28,21 @@ import static android.telephony.TelephonyManager.NETWORK_CLASS_3_G; import static android.telephony.TelephonyManager.NETWORK_CLASS_4_G; import static android.telephony.TelephonyManager.NETWORK_CLASS_UNKNOWN; import static android.telephony.TelephonyManager.getNetworkClass; + import static com.android.internal.util.ArrayUtils.contains; import android.content.res.Resources; import android.os.Parcel; import android.os.Parcelable; +import android.util.BackupUtils; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.ArrayUtils; +import java.io.ByteArrayOutputStream; +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; import java.util.Arrays; import java.util.Objects; @@ -47,6 +53,10 @@ import java.util.Objects; * @hide */ public class NetworkTemplate implements Parcelable { + /** + * Current Version of the Backup Serializer. + */ + private static final int BACKUP_VERSION = 1; public static final int MATCH_MOBILE_ALL = 1; @Deprecated @@ -443,4 +453,31 @@ public class NetworkTemplate implements Parcelable { return new NetworkTemplate[size]; } }; + + public byte[] getBytesForBackup() throws IOException { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + DataOutputStream out = new DataOutputStream(baos); + + out.writeInt(BACKUP_VERSION); + + out.writeInt(mMatchRule); + BackupUtils.writeString(out, mSubscriberId); + BackupUtils.writeString(out, mNetworkId); + + return baos.toByteArray(); + } + + public static NetworkTemplate getNetworkTemplateFromBackup(DataInputStream in) + throws IOException, BackupUtils.BadVersionException { + int version = in.readInt(); + if (version < 1 || version > BACKUP_VERSION) { + throw new BackupUtils.BadVersionException("Unknown Backup Serialization Version"); + } + + int matchRule = in.readInt(); + String subscriberId = BackupUtils.readString(in); + String networkId = BackupUtils.readString(in); + + return new NetworkTemplate(matchRule, subscriberId, networkId); + } } |
