Merge "Stop using CaptivePortalData in the shim interfaces." am: ee6648c467 am: 5478c66890

Original change: https://android-review.googlesource.com/c/platform/packages/modules/NetworkStack/+/1598153

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Ib4b150de012d98b71982c0bec4db3a29f198c0eb
diff --git a/apishim/29/com/android/networkstack/apishim/api29/CaptivePortalDataShimImpl.java b/apishim/29/com/android/networkstack/apishim/api29/CaptivePortalDataShimImpl.java
index 97ac602..6caee13 100644
--- a/apishim/29/com/android/networkstack/apishim/api29/CaptivePortalDataShimImpl.java
+++ b/apishim/29/com/android/networkstack/apishim/api29/CaptivePortalDataShimImpl.java
@@ -16,7 +16,6 @@
 
 package com.android.networkstack.apishim.api29;
 
-import android.net.CaptivePortalData;
 import android.net.Uri;
 
 import androidx.annotation.NonNull;
@@ -75,7 +74,7 @@
      * @return a {@link CaptivePortalData} object with a friendly name set
      */
     @Override
-    public CaptivePortalData withVenueFriendlyName(String friendlyName)
+    public CaptivePortalDataShim withVenueFriendlyName(String friendlyName)
             throws UnsupportedApiLevelException {
         // Not supported in API level 29
         throw new UnsupportedApiLevelException("CaptivePortalData not supported on API 29");
@@ -93,7 +92,7 @@
      * and conditions URL set
      */
     @Override
-    public CaptivePortalData withPasspointInfo(@NonNull String friendlyName,
+    public CaptivePortalDataShim withPasspointInfo(@NonNull String friendlyName,
             @NonNull Uri venueInfoUrl, @NonNull Uri termsAndConditionsUrl)
             throws UnsupportedApiLevelException {
         // Not supported in API level 29
diff --git a/apishim/29/com/android/networkstack/apishim/api29/NetworkInformationShimImpl.java b/apishim/29/com/android/networkstack/apishim/api29/NetworkInformationShimImpl.java
index 8dc7b5c..e68020b 100644
--- a/apishim/29/com/android/networkstack/apishim/api29/NetworkInformationShimImpl.java
+++ b/apishim/29/com/android/networkstack/apishim/api29/NetworkInformationShimImpl.java
@@ -16,7 +16,6 @@
 
 package com.android.networkstack.apishim.api29;
 
-import android.net.CaptivePortalData;
 import android.net.IpPrefix;
 import android.net.LinkProperties;
 import android.net.NetworkCapabilities;
@@ -121,10 +120,7 @@
      * @param captivePortalData Captive portal data to be used
      */
     public void setCaptivePortalData(@NonNull LinkProperties lp,
-            @Nullable CaptivePortalData captivePortalData) {
-        if (lp == null) {
-            return;
-        }
-        lp.setCaptivePortalData(captivePortalData);
+            @Nullable CaptivePortalDataShim captivePortalData) {
+        // Not supported on this API level: no-op
     }
 }
diff --git a/apishim/30/com/android/networkstack/apishim/api30/CaptivePortalDataShimImpl.java b/apishim/30/com/android/networkstack/apishim/api30/CaptivePortalDataShimImpl.java
index 8497b58..5825021 100644
--- a/apishim/30/com/android/networkstack/apishim/api30/CaptivePortalDataShimImpl.java
+++ b/apishim/30/com/android/networkstack/apishim/api30/CaptivePortalDataShimImpl.java
@@ -39,10 +39,14 @@
     @NonNull
     protected final CaptivePortalData mData;
 
-    protected CaptivePortalDataShimImpl(@NonNull CaptivePortalData data) {
+    public CaptivePortalDataShimImpl(@NonNull CaptivePortalData data) {
         mData = data;
     }
 
+    public CaptivePortalData getData() {
+        return mData;
+    }
+
     /**
      * Parse a {@link CaptivePortalDataShim} from a JSON object.
      * @throws JSONException The JSON is not a representation of correct captive portal data.
@@ -118,31 +122,31 @@
     }
 
     /**
-     * Generate a {@link CaptivePortalData} object with a friendly name set
+     * Generate a {@link CaptivePortalDataShim} object with a friendly name set
      *
      * @param friendlyName The friendly name to set
-     * @return a {@link CaptivePortalData} object with a friendly name set
+     * @return a {@link CaptivePortalDataShim} object with a friendly name set
      */
     @Override
-    public CaptivePortalData withVenueFriendlyName(String friendlyName)
+    public CaptivePortalDataShim withVenueFriendlyName(String friendlyName)
             throws UnsupportedApiLevelException {
         // Not supported in API level 29
         throw new UnsupportedApiLevelException("FriendlyName not supported on API 30");
     }
 
     /**
-     * Generate a {@link CaptivePortalData} object with a friendly name and Passpoint external URLs
-     * set
+     * Generate a {@link CaptivePortalDataShim} object with a friendly name and Passpoint external
+     * URLs set
      *
      * @param friendlyName The friendly name to set
      * @param venueInfoUrl Venue information URL
      * @param termsAndConditionsUrl Terms and conditions URL
      *
-     * @return a {@link CaptivePortalData} object with friendly name, venue info URL and terms
+     * @return a {@link CaptivePortalDataShim} object with friendly name, venue info URL and terms
      * and conditions URL set
      */
     @Override
-    public CaptivePortalData withPasspointInfo(@NonNull String friendlyName,
+    public CaptivePortalDataShim withPasspointInfo(@NonNull String friendlyName,
             @NonNull Uri venueInfoUrl, @NonNull Uri termsAndConditionsUrl)
             throws UnsupportedApiLevelException {
         // Not supported in API level 29
diff --git a/apishim/30/com/android/networkstack/apishim/api30/NetworkInformationShimImpl.java b/apishim/30/com/android/networkstack/apishim/api30/NetworkInformationShimImpl.java
index 5d9b013..3e0ad74 100644
--- a/apishim/30/com/android/networkstack/apishim/api30/NetworkInformationShimImpl.java
+++ b/apishim/30/com/android/networkstack/apishim/api30/NetworkInformationShimImpl.java
@@ -105,4 +105,13 @@
             @NonNull Inet4Address serverAddress) {
         lp.setDhcpServerAddress(serverAddress);
     }
+
+    @Override
+    public void setCaptivePortalData(@NonNull LinkProperties lp,
+            @Nullable CaptivePortalDataShim captivePortalData) {
+        if (lp == null) {
+            return;
+        }
+        lp.setCaptivePortalData(((CaptivePortalDataShimImpl) captivePortalData).getData());
+    }
 }
diff --git a/apishim/31/com/android/networkstack/apishim/CaptivePortalDataShimImpl.java b/apishim/31/com/android/networkstack/apishim/CaptivePortalDataShimImpl.java
index c1fef98..6e3eb19 100644
--- a/apishim/31/com/android/networkstack/apishim/CaptivePortalDataShimImpl.java
+++ b/apishim/31/com/android/networkstack/apishim/CaptivePortalDataShimImpl.java
@@ -28,7 +28,7 @@
  */
 public class CaptivePortalDataShimImpl
         extends com.android.networkstack.apishim.api30.CaptivePortalDataShimImpl {
-    protected CaptivePortalDataShimImpl(@NonNull CaptivePortalData data) {
+    public CaptivePortalDataShimImpl(@NonNull CaptivePortalData data) {
         super(data);
     }
 
@@ -47,37 +47,37 @@
     }
 
     /**
-     * Generate a {@link CaptivePortalData} object with a friendly name set
+     * Generate a {@link CaptivePortalDataShim} object with a friendly name set
      *
      * @param friendlyName The friendly name to set
-     * @return a {@link CaptivePortalData} object with a friendly name set
+     * @return a {@link CaptivePortalDataShim} object with a friendly name set
      */
     @Override
-    public CaptivePortalData withVenueFriendlyName(String friendlyName) {
-        return new CaptivePortalData.Builder(mData)
+    public CaptivePortalDataShim withVenueFriendlyName(String friendlyName) {
+        return new CaptivePortalDataShimImpl(new CaptivePortalData.Builder(mData)
                 .setVenueFriendlyName(friendlyName)
-                .build();
+                .build());
     }
 
     /**
-     * Generate a {@link CaptivePortalData} object with a friendly name and Passpoint external
+     * Generate a {@link CaptivePortalDataShim} object with a friendly name and Passpoint external
      * URLs set
      *
      * @param friendlyName The friendly name to set
      * @param venueInfoUrl Venue information URL
      * @param termsAndConditionsUrl Terms and conditions URL
      *
-     * @return a {@link CaptivePortalData} object with friendly name, venue info URL and terms
+     * @return a {@link CaptivePortalDataShim} object with friendly name, venue info URL and terms
      * and conditions URL set
      */
     @Override
-    public CaptivePortalData withPasspointInfo(@NonNull String friendlyName,
+    public CaptivePortalDataShim withPasspointInfo(@NonNull String friendlyName,
             @NonNull Uri venueInfoUrl, @NonNull Uri termsAndConditionsUrl) {
-        return new CaptivePortalData.Builder(mData)
+        return new CaptivePortalDataShimImpl(new CaptivePortalData.Builder(mData)
                 .setVenueFriendlyName(friendlyName)
                 .setVenueInfoUrl(venueInfoUrl, ConstantsShim.CAPTIVE_PORTAL_DATA_SOURCE_PASSPOINT)
                 .setUserPortalUrl(termsAndConditionsUrl,
                         ConstantsShim.CAPTIVE_PORTAL_DATA_SOURCE_PASSPOINT)
-                .build();
+                .build());
     }
 }
diff --git a/apishim/common/com/android/networkstack/apishim/common/CaptivePortalDataShim.java b/apishim/common/com/android/networkstack/apishim/common/CaptivePortalDataShim.java
index a15df1d..c4405bb 100644
--- a/apishim/common/com/android/networkstack/apishim/common/CaptivePortalDataShim.java
+++ b/apishim/common/com/android/networkstack/apishim/common/CaptivePortalDataShim.java
@@ -73,7 +73,7 @@
      * @throws UnsupportedApiLevelException when used with API level lower than 31
      * @return a {@link CaptivePortalData} object with a friendly name set
      */
-    CaptivePortalData withVenueFriendlyName(@NonNull String friendlyName)
+    CaptivePortalDataShim withVenueFriendlyName(@NonNull String friendlyName)
             throws UnsupportedApiLevelException;
 
     /**
@@ -88,7 +88,7 @@
      * @return a {@link CaptivePortalData} object with friendly name, venue info URL and terms
      * and conditions URL set
      */
-    CaptivePortalData withPasspointInfo(@NonNull String friendlyName,
+    CaptivePortalDataShim withPasspointInfo(@NonNull String friendlyName,
             @NonNull Uri venueInfoUrl, @NonNull Uri termsAndConditionsUrl)
             throws UnsupportedApiLevelException;
 }
diff --git a/apishim/common/com/android/networkstack/apishim/common/NetworkInformationShim.java b/apishim/common/com/android/networkstack/apishim/common/NetworkInformationShim.java
index 6cdcf8c..b2ed53e 100644
--- a/apishim/common/com/android/networkstack/apishim/common/NetworkInformationShim.java
+++ b/apishim/common/com/android/networkstack/apishim/common/NetworkInformationShim.java
@@ -16,7 +16,6 @@
 
 package com.android.networkstack.apishim.common;
 
-import android.net.CaptivePortalData;
 import android.net.IpPrefix;
 import android.net.LinkProperties;
 import android.net.NetworkCapabilities;
@@ -83,5 +82,5 @@
      * @param captivePortalData Captive portal data to be used
      */
     void setCaptivePortalData(@NonNull LinkProperties lp,
-            @Nullable CaptivePortalData captivePortalData);
+            @Nullable CaptivePortalDataShim captivePortalData);
 }
diff --git a/tests/unit/src/com/android/server/connectivity/NetworkMonitorTest.java b/tests/unit/src/com/android/server/connectivity/NetworkMonitorTest.java
index b790824..2735fb6 100644
--- a/tests/unit/src/com/android/server/connectivity/NetworkMonitorTest.java
+++ b/tests/unit/src/com/android/server/connectivity/NetworkMonitorTest.java
@@ -2549,11 +2549,12 @@
         when(mDependencies.isFeatureEnabled(any(), eq(NAMESPACE_CONNECTIVITY),
                 eq(DISMISS_PORTAL_IN_VALIDATED_NETWORK), anyBoolean())).thenReturn(true);
         final NetworkMonitor monitor = makeMonitor(WIFI_NOT_METERED_CAPABILITIES);
-        CaptivePortalData captivePortalData =
-                new CaptivePortalData.Builder().setCaptive(true).build();
-        final LinkProperties linkProperties = new LinkProperties(TEST_LINK_PROPERTIES);
-        linkProperties.setCaptivePortalData(captivePortalData);
+
         NetworkInformationShim networkShim = NetworkInformationShimImpl.newInstance();
+        CaptivePortalDataShim captivePortalData = new CaptivePortalDataShimImpl(
+                new CaptivePortalData.Builder().setCaptive(true).build());
+        final LinkProperties linkProperties = new LinkProperties(TEST_LINK_PROPERTIES);
+        networkShim.setCaptivePortalData(linkProperties, captivePortalData);
         CaptivePortalDataShim captivePortalDataShim =
                 networkShim.getCaptivePortalData(linkProperties);
 
@@ -2566,7 +2567,7 @@
             return;
         }
 
-        linkProperties.setCaptivePortalData(captivePortalData);
+        networkShim.setCaptivePortalData(linkProperties, captivePortalData);
         monitor.notifyLinkPropertiesChanged(linkProperties);
         final NetworkCapabilities networkCapabilities =
                 new NetworkCapabilities(WIFI_NOT_METERED_CAPABILITIES);