diff options
author | 2019-02-06 09:19:07 +0000 | |
---|---|---|
committer | 2019-02-06 09:19:07 +0000 | |
commit | 533b2960fc260de7b9bad62b393690517f4eef1d (patch) | |
tree | 484278f13063d3901dce4c5c1ed0a4aacc1a45b5 | |
parent | 4b7cae6c0d67220e07f6f3630b80d9e258608111 (diff) | |
parent | 2ed5d4cf9200f9b2a3a14fa7ba359b788eeb14d7 (diff) |
Merge "[KA03.5] Add stable AIDL parcelable for TcpKeepalivePacketData"
-rw-r--r-- | Android.bp | 1 | ||||
-rw-r--r-- | core/java/android/net/TcpKeepalivePacketData.java | 34 | ||||
-rw-r--r-- | core/java/android/net/TcpKeepalivePacketDataParcelable.aidl (renamed from core/java/android/net/TcpKeepalivePacketData.aidl) | 10 | ||||
-rw-r--r-- | tests/net/java/android/net/TcpKeepalivePacketDataTest.java | 24 |
4 files changed, 66 insertions, 3 deletions
diff --git a/Android.bp b/Android.bp index fcea5d02558b..8f0c8986aee7 100644 --- a/Android.bp +++ b/Android.bp @@ -833,6 +833,7 @@ aidl_interface { "core/java/android/net/ProxyInfoParcelable.aidl", "core/java/android/net/RouteInfoParcelable.aidl", "core/java/android/net/StaticIpConfigurationParcelable.aidl", + "core/java/android/net/TcpKeepalivePacketDataParcelable.aidl", "core/java/android/net/dhcp/DhcpServingParamsParcel.aidl", "core/java/android/net/dhcp/IDhcpServer.aidl", "core/java/android/net/dhcp/IDhcpServerCallbacks.aidl", diff --git a/core/java/android/net/TcpKeepalivePacketData.java b/core/java/android/net/TcpKeepalivePacketData.java index aba4989e0bf3..f07dfb64cd01 100644 --- a/core/java/android/net/TcpKeepalivePacketData.java +++ b/core/java/android/net/TcpKeepalivePacketData.java @@ -17,6 +17,7 @@ package android.net; import static android.net.SocketKeepalive.ERROR_INVALID_IP_ADDRESS; +import android.annotation.NonNull; import android.annotation.Nullable; import android.net.SocketKeepalive.InvalidPacketException; import android.net.util.IpUtils; @@ -122,6 +123,7 @@ public class TcpKeepalivePacketData extends KeepalivePacketData implements Parce // TODO: add buildV6Packet. /** Represents tcp/ip information. */ + // TODO: Replace TcpSocketInfo with TcpKeepalivePacketDataParcelable. public static class TcpSocketInfo { public final InetAddress srcAddress; public final InetAddress dstAddress; @@ -166,7 +168,10 @@ public class TcpKeepalivePacketData extends KeepalivePacketData implements Parce } /* Parcelable Implementation. */ - /** No special parcel contents. */ + /* Note that this object implements parcelable (and needs to keep doing this as it inherits + * from a class that does), but should usually be parceled as a stable parcelable using + * the toStableParcelable() and fromStableParcelable() methods. + */ public int describeContents() { return 0; } @@ -199,4 +204,31 @@ public class TcpKeepalivePacketData extends KeepalivePacketData implements Parce return new TcpKeepalivePacketData[size]; } }; + + /** + * Convert this TcpKeepalivePacketData to a TcpKeepalivePacketDataParcelable. + */ + @NonNull + public TcpKeepalivePacketDataParcelable toStableParcelable() { + final TcpKeepalivePacketDataParcelable parcel = new TcpKeepalivePacketDataParcelable(); + parcel.srcAddress = srcAddress.getAddress(); + parcel.srcPort = srcPort; + parcel.dstAddress = dstAddress.getAddress(); + parcel.dstPort = dstPort; + parcel.seq = tcpSeq; + parcel.ack = tcpAck; + return parcel; + } + + @Override + public String toString() { + return "saddr: " + srcAddress + + " daddr: " + dstAddress + + " sport: " + srcPort + + " dport: " + dstPort + + " seq: " + tcpSeq + + " ack: " + tcpAck + + " wnd: " + tcpWnd + + " wndScale: " + tcpWndScale; + } } diff --git a/core/java/android/net/TcpKeepalivePacketData.aidl b/core/java/android/net/TcpKeepalivePacketDataParcelable.aidl index c91eb03bd598..7329c63b09be 100644 --- a/core/java/android/net/TcpKeepalivePacketData.aidl +++ b/core/java/android/net/TcpKeepalivePacketDataParcelable.aidl @@ -16,5 +16,11 @@ package android.net; -parcelable TcpKeepalivePacketData; - +parcelable TcpKeepalivePacketDataParcelable { + byte[] srcAddress; + int srcPort; + byte[] dstAddress; + int dstPort; + int seq; + int ack; +} diff --git a/tests/net/java/android/net/TcpKeepalivePacketDataTest.java b/tests/net/java/android/net/TcpKeepalivePacketDataTest.java index 16fc41b816e6..1f2dd275bb7b 100644 --- a/tests/net/java/android/net/TcpKeepalivePacketDataTest.java +++ b/tests/net/java/android/net/TcpKeepalivePacketDataTest.java @@ -99,4 +99,28 @@ public final class TcpKeepalivePacketDataTest { } //TODO: add ipv6 test when ipv6 supported + + @Test + public void testParcel() throws Exception { + final InetAddress srcAddr = InetAddresses.parseNumericAddress("192.168.0.1"); + final InetAddress dstAddr = InetAddresses.parseNumericAddress("192.168.0.10"); + final int srcPort = 1234; + final int dstPort = 4321; + final int sequence = 0x11111111; + final int ack = 0x22222222; + final int wnd = 48_000; + final int wndScale = 2; + TcpKeepalivePacketData testData = null; + TcpKeepalivePacketDataParcelable resultData = null; + TcpSocketInfo testInfo = new TcpSocketInfo( + srcAddr, srcPort, dstAddr, dstPort, sequence, ack, wnd, wndScale); + testData = TcpKeepalivePacketData.tcpKeepalivePacket(testInfo); + resultData = testData.toStableParcelable(); + assertArrayEquals(resultData.srcAddress, srcAddr.getAddress()); + assertArrayEquals(resultData.dstAddress, dstAddr.getAddress()); + assertEquals(resultData.srcPort, srcPort); + assertEquals(resultData.dstPort, dstPort); + assertEquals(resultData.seq, sequence); + assertEquals(resultData.ack, ack); + } } |