diff --git a/services/net/java/android/net/StaticIpConfigurationParcelable.aidl b/core/java/android/net/StaticIpConfiguration.aidl similarity index 78% rename from services/net/java/android/net/StaticIpConfigurationParcelable.aidl rename to core/java/android/net/StaticIpConfiguration.aidl index 6fffb423edb51..8aac701fe7e19 100644 --- a/services/net/java/android/net/StaticIpConfigurationParcelable.aidl +++ b/core/java/android/net/StaticIpConfiguration.aidl @@ -17,11 +17,4 @@ package android.net; -import android.net.LinkAddress; - -parcelable StaticIpConfigurationParcelable { - LinkAddress ipAddress; - String gateway; - String[] dnsServers; - String domains; -} +@JavaOnlyStableParcelable parcelable StaticIpConfiguration; \ No newline at end of file diff --git a/core/java/android/net/apf/ApfCapabilities.aidl b/core/java/android/net/apf/ApfCapabilities.aidl new file mode 100644 index 0000000000000..7c4d4c2da4bce --- /dev/null +++ b/core/java/android/net/apf/ApfCapabilities.aidl @@ -0,0 +1,20 @@ +/* +** +** Copyright (C) 2019 The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + +package android.net.apf; + +@JavaOnlyStableParcelable parcelable ApfCapabilities; \ No newline at end of file diff --git a/services/net/Android.bp b/services/net/Android.bp index 9e1d44b9faff9..67fbdc4d95f29 100644 --- a/services/net/Android.bp +++ b/services/net/Android.bp @@ -25,7 +25,6 @@ aidl_interface { local_include_dir: "java", include_dirs: ["frameworks/base/core/java"], // For framework parcelables. srcs: [ - "java/android/net/ApfCapabilitiesParcelable.aidl", "java/android/net/DhcpResultsParcelable.aidl", "java/android/net/IIpMemoryStore.aidl", "java/android/net/IIpMemoryStoreCallbacks.aidl", @@ -36,7 +35,6 @@ aidl_interface { "java/android/net/InitialConfigurationParcelable.aidl", "java/android/net/PrivateDnsConfigParcel.aidl", "java/android/net/ProvisioningConfigurationParcelable.aidl", - "java/android/net/StaticIpConfigurationParcelable.aidl", "java/android/net/TcpKeepalivePacketDataParcelable.aidl", "java/android/net/dhcp/DhcpServingParamsParcel.aidl", "java/android/net/dhcp/IDhcpServer.aidl", diff --git a/services/net/java/android/net/ApfCapabilitiesParcelable.aidl b/services/net/java/android/net/ApfCapabilitiesParcelable.aidl deleted file mode 100644 index f0645d2782d21..0000000000000 --- a/services/net/java/android/net/ApfCapabilitiesParcelable.aidl +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (C) 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.net; - -parcelable ApfCapabilitiesParcelable { - int apfVersionSupported; - int maximumApfProgramSize; - int apfPacketFormat; -} \ No newline at end of file diff --git a/services/net/java/android/net/DhcpResultsParcelable.aidl b/services/net/java/android/net/DhcpResultsParcelable.aidl index cf5629b6f7929..978638b51ad16 100644 --- a/services/net/java/android/net/DhcpResultsParcelable.aidl +++ b/services/net/java/android/net/DhcpResultsParcelable.aidl @@ -16,10 +16,10 @@ package android.net; -import android.net.StaticIpConfigurationParcelable; +import android.net.StaticIpConfiguration; parcelable DhcpResultsParcelable { - StaticIpConfigurationParcelable baseConfiguration; + StaticIpConfiguration baseConfiguration; int leaseDuration; int mtu; String serverAddress; diff --git a/services/net/java/android/net/ProvisioningConfigurationParcelable.aidl b/services/net/java/android/net/ProvisioningConfigurationParcelable.aidl index 5b46d7f55ee37..99606fb4b7a29 100644 --- a/services/net/java/android/net/ProvisioningConfigurationParcelable.aidl +++ b/services/net/java/android/net/ProvisioningConfigurationParcelable.aidl @@ -17,10 +17,10 @@ package android.net; -import android.net.ApfCapabilitiesParcelable; import android.net.InitialConfigurationParcelable; import android.net.Network; -import android.net.StaticIpConfigurationParcelable; +import android.net.StaticIpConfiguration; +import android.net.apf.ApfCapabilities; parcelable ProvisioningConfigurationParcelable { boolean enableIPv4; @@ -29,8 +29,8 @@ parcelable ProvisioningConfigurationParcelable { boolean usingIpReachabilityMonitor; int requestedPreDhcpActionMs; InitialConfigurationParcelable initialConfig; - StaticIpConfigurationParcelable staticIpConfig; - ApfCapabilitiesParcelable apfCapabilities; + StaticIpConfiguration staticIpConfig; + ApfCapabilities apfCapabilities; int provisioningTimeoutMs; int ipv6AddrGenMode; Network network; diff --git a/services/net/java/android/net/shared/IpConfigurationParcelableUtil.java b/services/net/java/android/net/shared/IpConfigurationParcelableUtil.java index 6b5826f8b0955..44d8e0ce3635a 100644 --- a/services/net/java/android/net/shared/IpConfigurationParcelableUtil.java +++ b/services/net/java/android/net/shared/IpConfigurationParcelableUtil.java @@ -16,17 +16,10 @@ package android.net.shared; -import static android.net.shared.ParcelableUtil.fromParcelableArray; -import static android.net.shared.ParcelableUtil.toParcelableArray; - import android.annotation.Nullable; -import android.net.ApfCapabilitiesParcelable; import android.net.DhcpResults; import android.net.DhcpResultsParcelable; import android.net.InetAddresses; -import android.net.StaticIpConfiguration; -import android.net.StaticIpConfigurationParcelable; -import android.net.apf.ApfCapabilities; import java.net.Inet4Address; import java.net.InetAddress; @@ -37,45 +30,13 @@ import java.net.InetAddress; * @hide */ public final class IpConfigurationParcelableUtil { - /** - * Convert a StaticIpConfiguration to a StaticIpConfigurationParcelable. - */ - public static StaticIpConfigurationParcelable toStableParcelable( - @Nullable StaticIpConfiguration config) { - if (config == null) return null; - final StaticIpConfigurationParcelable p = new StaticIpConfigurationParcelable(); - p.ipAddress = config.getIpAddress(); - p.gateway = parcelAddress(config.getGateway()); - p.dnsServers = toParcelableArray( - config.getDnsServers(), IpConfigurationParcelableUtil::parcelAddress, String.class); - p.domains = config.getDomains(); - return p; - } - - /** - * Convert a StaticIpConfigurationParcelable to a StaticIpConfiguration. - */ - public static StaticIpConfiguration fromStableParcelable( - @Nullable StaticIpConfigurationParcelable p) { - if (p == null) return null; - final StaticIpConfiguration config = new StaticIpConfiguration(); - config.setIpAddress(p.ipAddress); - config.setGateway(unparcelAddress(p.gateway)); - for (InetAddress addr : fromParcelableArray( - p.dnsServers, IpConfigurationParcelableUtil::unparcelAddress)) { - config.addDnsServer(addr); - } - config.setDomains(p.domains); - return config; - } - /** * Convert DhcpResults to a DhcpResultsParcelable. */ public static DhcpResultsParcelable toStableParcelable(@Nullable DhcpResults results) { if (results == null) return null; final DhcpResultsParcelable p = new DhcpResultsParcelable(); - p.baseConfiguration = toStableParcelable(results.toStaticIpConfiguration()); + p.baseConfiguration = results.toStaticIpConfiguration(); p.leaseDuration = results.leaseDuration; p.mtu = results.mtu; p.serverAddress = parcelAddress(results.serverAddress); @@ -88,7 +49,7 @@ public final class IpConfigurationParcelableUtil { */ public static DhcpResults fromStableParcelable(@Nullable DhcpResultsParcelable p) { if (p == null) return null; - final DhcpResults results = new DhcpResults(fromStableParcelable(p.baseConfiguration)); + final DhcpResults results = new DhcpResults(p.baseConfiguration); results.leaseDuration = p.leaseDuration; results.mtu = p.mtu; results.serverAddress = (Inet4Address) unparcelAddress(p.serverAddress); @@ -96,27 +57,6 @@ public final class IpConfigurationParcelableUtil { return results; } - /** - * Convert ApfCapabilities to ApfCapabilitiesParcelable. - */ - public static ApfCapabilitiesParcelable toStableParcelable(@Nullable ApfCapabilities caps) { - if (caps == null) return null; - final ApfCapabilitiesParcelable p = new ApfCapabilitiesParcelable(); - p.apfVersionSupported = caps.apfVersionSupported; - p.maximumApfProgramSize = caps.maximumApfProgramSize; - p.apfPacketFormat = caps.apfPacketFormat; - return p; - } - - /** - * Convert ApfCapabilitiesParcelable toApfCapabilities. - */ - public static ApfCapabilities fromStableParcelable(@Nullable ApfCapabilitiesParcelable p) { - if (p == null) return null; - return new ApfCapabilities( - p.apfVersionSupported, p.maximumApfProgramSize, p.apfPacketFormat); - } - /** * Convert InetAddress to String. * TODO: have an InetAddressParcelable diff --git a/services/net/java/android/net/shared/ProvisioningConfiguration.java b/services/net/java/android/net/shared/ProvisioningConfiguration.java index 0aceb2278660e..6f9c2949d8644 100644 --- a/services/net/java/android/net/shared/ProvisioningConfiguration.java +++ b/services/net/java/android/net/shared/ProvisioningConfiguration.java @@ -235,8 +235,10 @@ public class ProvisioningConfiguration { p.usingIpReachabilityMonitor = mUsingIpReachabilityMonitor; p.requestedPreDhcpActionMs = mRequestedPreDhcpActionMs; p.initialConfig = mInitialConfig == null ? null : mInitialConfig.toStableParcelable(); - p.staticIpConfig = IpConfigurationParcelableUtil.toStableParcelable(mStaticIpConfig); - p.apfCapabilities = IpConfigurationParcelableUtil.toStableParcelable(mApfCapabilities); + p.staticIpConfig = mStaticIpConfig == null + ? null + : new StaticIpConfiguration(mStaticIpConfig); + p.apfCapabilities = mApfCapabilities; // ApfCapabilities is immutable p.provisioningTimeoutMs = mProvisioningTimeoutMs; p.ipv6AddrGenMode = mIPv6AddrGenMode; p.network = mNetwork; @@ -257,10 +259,10 @@ public class ProvisioningConfiguration { config.mUsingIpReachabilityMonitor = p.usingIpReachabilityMonitor; config.mRequestedPreDhcpActionMs = p.requestedPreDhcpActionMs; config.mInitialConfig = InitialConfiguration.fromStableParcelable(p.initialConfig); - config.mStaticIpConfig = IpConfigurationParcelableUtil.fromStableParcelable( - p.staticIpConfig); - config.mApfCapabilities = IpConfigurationParcelableUtil.fromStableParcelable( - p.apfCapabilities); + config.mStaticIpConfig = p.staticIpConfig == null + ? null + : new StaticIpConfiguration(p.staticIpConfig); + config.mApfCapabilities = p.apfCapabilities; // ApfCapabilities is immutable config.mProvisioningTimeoutMs = p.provisioningTimeoutMs; config.mIPv6AddrGenMode = p.ipv6AddrGenMode; config.mNetwork = p.network; diff --git a/tests/net/java/android/net/shared/IpConfigurationParcelableUtilTest.java b/tests/net/java/android/net/shared/IpConfigurationParcelableUtilTest.java index 3e86e77183ec1..21a4988950dbe 100644 --- a/tests/net/java/android/net/shared/IpConfigurationParcelableUtilTest.java +++ b/tests/net/java/android/net/shared/IpConfigurationParcelableUtilTest.java @@ -25,8 +25,6 @@ import static org.junit.Assert.assertEquals; import android.net.DhcpResults; import android.net.LinkAddress; -import android.net.StaticIpConfiguration; -import android.net.apf.ApfCapabilities; import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; @@ -43,21 +41,16 @@ import java.net.Inet4Address; @RunWith(AndroidJUnit4.class) @SmallTest public class IpConfigurationParcelableUtilTest { - private StaticIpConfiguration mStaticIpConfiguration; private DhcpResults mDhcpResults; @Before public void setUp() { - mStaticIpConfiguration = new StaticIpConfiguration(); - mStaticIpConfiguration.ipAddress = new LinkAddress(parseNumericAddress("2001:db8::42"), 64); - mStaticIpConfiguration.gateway = parseNumericAddress("192.168.42.42"); - mStaticIpConfiguration.dnsServers.add(parseNumericAddress("2001:db8::43")); - mStaticIpConfiguration.dnsServers.add(parseNumericAddress("192.168.43.43")); - mStaticIpConfiguration.domains = "example.com"; - // Any added StaticIpConfiguration field must be included in equals() to be tested properly - assertFieldCountEquals(4, StaticIpConfiguration.class); - - mDhcpResults = new DhcpResults(mStaticIpConfiguration); + mDhcpResults = new DhcpResults(); + mDhcpResults.ipAddress = new LinkAddress(parseNumericAddress("2001:db8::42"), 64); + mDhcpResults.gateway = parseNumericAddress("192.168.42.42"); + mDhcpResults.dnsServers.add(parseNumericAddress("2001:db8::43")); + mDhcpResults.dnsServers.add(parseNumericAddress("192.168.43.43")); + mDhcpResults.domains = "example.com"; mDhcpResults.serverAddress = (Inet4Address) parseNumericAddress("192.168.44.44"); mDhcpResults.vendorInfo = "TEST_VENDOR_INFO"; mDhcpResults.leaseDuration = 3600; @@ -66,46 +59,35 @@ public class IpConfigurationParcelableUtilTest { assertFieldCountEquals(8, DhcpResults.class); } - @Test - public void testParcelUnparcelStaticConfiguration() { - doStaticConfigurationParcelUnparcelTest(); - } - - @Test - public void testParcelUnparcelStaticConfiguration_NullIpAddress() { - mStaticIpConfiguration.ipAddress = null; - doStaticConfigurationParcelUnparcelTest(); - } - - @Test - public void testParcelUnparcelStaticConfiguration_NullGateway() { - mStaticIpConfiguration.gateway = null; - doStaticConfigurationParcelUnparcelTest(); - } - - @Test - public void testParcelUnparcelStaticConfiguration_NullDomains() { - mStaticIpConfiguration.domains = null; - doStaticConfigurationParcelUnparcelTest(); - } - - @Test - public void testParcelUnparcelStaticConfiguration_EmptyDomains() { - mStaticIpConfiguration.domains = ""; - doStaticConfigurationParcelUnparcelTest(); - } - - private void doStaticConfigurationParcelUnparcelTest() { - final StaticIpConfiguration unparceled = - fromStableParcelable(toStableParcelable(mStaticIpConfiguration)); - assertEquals(mStaticIpConfiguration, unparceled); - } - @Test public void testParcelUnparcelDhcpResults() { doDhcpResultsParcelUnparcelTest(); } + @Test + public void testParcelUnparcelDhcpResults_NullIpAddress() { + mDhcpResults.ipAddress = null; + doDhcpResultsParcelUnparcelTest(); + } + + @Test + public void testParcelUnparcelDhcpResults_NullGateway() { + mDhcpResults.gateway = null; + doDhcpResultsParcelUnparcelTest(); + } + + @Test + public void testParcelUnparcelDhcpResults_NullDomains() { + mDhcpResults.domains = null; + doDhcpResultsParcelUnparcelTest(); + } + + @Test + public void testParcelUnparcelDhcpResults_EmptyDomains() { + mDhcpResults.domains = ""; + doDhcpResultsParcelUnparcelTest(); + } + @Test public void testParcelUnparcelDhcpResults_NullServerAddress() { mDhcpResults.serverAddress = null; @@ -122,10 +104,4 @@ public class IpConfigurationParcelableUtilTest { final DhcpResults unparceled = fromStableParcelable(toStableParcelable(mDhcpResults)); assertEquals(mDhcpResults, unparceled); } - - @Test - public void testParcelUnparcelApfCapabilities() { - final ApfCapabilities caps = new ApfCapabilities(123, 456, 789); - assertEquals(caps, fromStableParcelable(toStableParcelable(caps))); - } }