diff options
author | Jeff Sharkey <jsharkey@android.com> | 2014-09-17 09:26:28 -0700 |
---|---|---|
committer | Jeff Sharkey <jsharkey@android.com> | 2014-09-17 09:26:31 -0700 |
commit | 7a8f1a32dcbd93354ba5b8987be9a9d9d0d61519 (patch) | |
tree | e33e3ee193e89936ad5b401aae0f188442cae82d | |
parent | b1e71af498148c31eb4db7e99cb6dcd7727f7124 (diff) | |
download | frameworks_base-7a8f1a32dcbd93354ba5b8987be9a9d9d0d61519.zip frameworks_base-7a8f1a32dcbd93354ba5b8987be9a9d9d0d61519.tar.gz frameworks_base-7a8f1a32dcbd93354ba5b8987be9a9d9d0d61519.tar.bz2 |
NetworkStats always needs arrays.
Internal logic relies on Arrays.copyOf(), so always give ourselves
valid arrays, using shared empty objects to save overhead.
Bug: 17502649
Change-Id: I5dbb00545bdfe45bbd48144ab505ea08cc92cbcd
-rw-r--r-- | core/java/android/net/NetworkStats.java | 11 | ||||
-rw-r--r-- | core/tests/coretests/src/android/net/NetworkStatsTest.java | 10 |
2 files changed, 21 insertions, 0 deletions
diff --git a/core/java/android/net/NetworkStats.java b/core/java/android/net/NetworkStats.java index 54d43d3..ea5dfd1 100644 --- a/core/java/android/net/NetworkStats.java +++ b/core/java/android/net/NetworkStats.java @@ -24,6 +24,8 @@ import android.util.SparseBooleanArray; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.ArrayUtils; +import libcore.util.EmptyArray; + import java.io.CharArrayWriter; import java.io.PrintWriter; import java.util.Arrays; @@ -169,6 +171,15 @@ public class NetworkStats implements Parcelable { } else { // Special case for use by NetworkStatsFactory to start out *really* empty. this.capacity = 0; + this.iface = EmptyArray.STRING; + this.uid = EmptyArray.INT; + this.set = EmptyArray.INT; + this.tag = EmptyArray.INT; + this.rxBytes = EmptyArray.LONG; + this.rxPackets = EmptyArray.LONG; + this.txBytes = EmptyArray.LONG; + this.txPackets = EmptyArray.LONG; + this.operations = EmptyArray.LONG; } } diff --git a/core/tests/coretests/src/android/net/NetworkStatsTest.java b/core/tests/coretests/src/android/net/NetworkStatsTest.java index 6331964..9ee4e20 100644 --- a/core/tests/coretests/src/android/net/NetworkStatsTest.java +++ b/core/tests/coretests/src/android/net/NetworkStatsTest.java @@ -310,6 +310,16 @@ public class NetworkStatsTest extends TestCase { assertEquals(128L + 512L, clone.getTotalBytes()); } + public void testAddWhenEmpty() throws Exception { + final NetworkStats red = new NetworkStats(TEST_START, -1); + final NetworkStats blue = new NetworkStats(TEST_START, 5) + .addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 128L, 8L, 0L, 2L, 20L) + .addValues(TEST_IFACE2, 100, SET_DEFAULT, TAG_NONE, 512L, 32L, 0L, 0L, 0L); + + // We're mostly checking that we don't crash + red.combineAllValues(blue); + } + private static void assertValues(NetworkStats stats, int index, String iface, int uid, int set, int tag, long rxBytes, long rxPackets, long txBytes, long txPackets, long operations) { final NetworkStats.Entry entry = stats.getValues(index, null); |