From ad683cadb293a97570ba1f31e64cf9c95bbb7d09 Mon Sep 17 00:00:00 2001 From: Roshan Pius Date: Wed, 1 Jun 2016 17:51:28 -0700 Subject: [PATCH] IpConfigStore: Changes for parsing old wifi backup Some changes in IpConfigStore to parse old backup data. The old backup data contained a raw byte dump of the ipconfig.txt. So, make changes in IpConfigStore to parse the inputstream from backup data into IpConfiguration objects. Changes in the CL: 1. Make the |readIpAndProxyConfigurations| method static so that it can be used as a utility for parsing the backup data. 2. Create a new version of |readIpAndProxyConfigurations| method to accept an input stream parameter. 3. Make |writeConfig| method static so that it can be used for unit-testing the backup migration logic. BUG: 29075035 Change-Id: Ic074952d9f9ef143089a371e6c527470cb1c229c --- .../com/android/server/net/IpConfigStore.java | 29 +++++++++++++++---- 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/services/core/java/com/android/server/net/IpConfigStore.java b/services/core/java/com/android/server/net/IpConfigStore.java index 2807ec822b..4d56468f2f 100644 --- a/services/core/java/com/android/server/net/IpConfigStore.java +++ b/services/core/java/com/android/server/net/IpConfigStore.java @@ -27,6 +27,7 @@ import android.net.StaticIpConfiguration; import android.util.Log; import android.util.SparseArray; +import com.android.internal.annotations.VisibleForTesting; import com.android.server.net.DelayedDiskWrite; import java.io.BufferedInputStream; @@ -34,7 +35,9 @@ import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.EOFException; import java.io.FileInputStream; +import java.io.FileNotFoundException; import java.io.IOException; +import java.io.InputStream; import java.net.InetAddress; import java.net.Inet4Address; @@ -67,7 +70,8 @@ public class IpConfigStore { this(new DelayedDiskWrite()); } - private boolean writeConfig(DataOutputStream out, int configKey, + @VisibleForTesting + public static boolean writeConfig(DataOutputStream out, int configKey, IpConfiguration config) throws IOException { boolean written = false; @@ -171,12 +175,25 @@ public class IpConfigStore { }); } - public SparseArray readIpAndProxyConfigurations(String filePath) { - SparseArray networks = new SparseArray(); + public static SparseArray readIpAndProxyConfigurations(String filePath) { + BufferedInputStream bufferedInputStream; + try { + bufferedInputStream = new BufferedInputStream(new FileInputStream(filePath)); + } catch (FileNotFoundException e) { + // Return an empty array here because callers expect an empty array when the file is + // not present. + loge("Error opening configuration file: " + e); + return new SparseArray<>(); + } + return readIpAndProxyConfigurations(bufferedInputStream); + } + public static SparseArray readIpAndProxyConfigurations( + InputStream inputStream) { + SparseArray networks = new SparseArray(); DataInputStream in = null; try { - in = new DataInputStream(new BufferedInputStream(new FileInputStream(filePath))); + in = new DataInputStream(inputStream); int version = in.readInt(); if (version != 2 && version != 1) { @@ -327,11 +344,11 @@ public class IpConfigStore { return networks; } - protected void loge(String s) { + protected static void loge(String s) { Log.e(TAG, s); } - protected void log(String s) { + protected static void log(String s) { Log.d(TAG, s); } }