Make CaptivePortalProbeSpec and CaptivePortalProbeResult as a library
These two classes were added to @SystemApi because they are used
both by NetworkMonitor and CaptivePortalLogin. However it turns
out they are not needed in the framework, so having them as a
library sounds better.
Change-Id: Iadf77ec5952b6da8812dc6d006a39bd4e93d2bd9
Fix: 129433264
Test: atest NetworkStackTests FrameworksNetTests
diff --git a/api/system-current.txt b/api/system-current.txt
index 8e09928..373ff18 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -3328,37 +3328,6 @@
}
-package android.net.captiveportal {
-
- public final class CaptivePortalProbeResult {
- ctor public CaptivePortalProbeResult(int);
- ctor public CaptivePortalProbeResult(int, @Nullable String, @Nullable String);
- ctor public CaptivePortalProbeResult(int, @Nullable String, @Nullable String, @Nullable android.net.captiveportal.CaptivePortalProbeSpec);
- method public boolean isFailed();
- method public boolean isPartialConnectivity();
- method public boolean isPortal();
- method public boolean isSuccessful();
- field @NonNull public static final android.net.captiveportal.CaptivePortalProbeResult FAILED;
- field public static final int FAILED_CODE = 599; // 0x257
- field public static final android.net.captiveportal.CaptivePortalProbeResult PARTIAL;
- field public static final int PORTAL_CODE = 302; // 0x12e
- field @NonNull public static final android.net.captiveportal.CaptivePortalProbeResult SUCCESS;
- field public static final int SUCCESS_CODE = 204; // 0xcc
- field @Nullable public final String detectUrl;
- field @Nullable public final android.net.captiveportal.CaptivePortalProbeSpec probeSpec;
- field @Nullable public final String redirectUrl;
- }
-
- public abstract class CaptivePortalProbeSpec {
- method @NonNull public String getEncodedSpec();
- method @NonNull public abstract android.net.captiveportal.CaptivePortalProbeResult getResult(int, @Nullable String);
- method @NonNull public java.net.URL getUrl();
- method @NonNull public static java.util.Collection<android.net.captiveportal.CaptivePortalProbeSpec> parseCaptivePortalProbeSpecs(@NonNull String);
- method @Nullable public static android.net.captiveportal.CaptivePortalProbeSpec parseSpecOrNull(@Nullable String);
- }
-
-}
-
package android.net.metrics {
public final class ApfProgramEvent implements android.net.metrics.IpConnectivityLog.Event {
diff --git a/api/test-current.txt b/api/test-current.txt
index 7f86d5d..3c7e761 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -747,37 +747,6 @@
}
-package android.net.captiveportal {
-
- public final class CaptivePortalProbeResult {
- ctor public CaptivePortalProbeResult(int);
- ctor public CaptivePortalProbeResult(int, @Nullable String, @Nullable String);
- ctor public CaptivePortalProbeResult(int, @Nullable String, @Nullable String, @Nullable android.net.captiveportal.CaptivePortalProbeSpec);
- method public boolean isFailed();
- method public boolean isPartialConnectivity();
- method public boolean isPortal();
- method public boolean isSuccessful();
- field @NonNull public static final android.net.captiveportal.CaptivePortalProbeResult FAILED;
- field public static final int FAILED_CODE = 599; // 0x257
- field public static final android.net.captiveportal.CaptivePortalProbeResult PARTIAL;
- field public static final int PORTAL_CODE = 302; // 0x12e
- field @NonNull public static final android.net.captiveportal.CaptivePortalProbeResult SUCCESS;
- field public static final int SUCCESS_CODE = 204; // 0xcc
- field @Nullable public final String detectUrl;
- field @Nullable public final android.net.captiveportal.CaptivePortalProbeSpec probeSpec;
- field @Nullable public final String redirectUrl;
- }
-
- public abstract class CaptivePortalProbeSpec {
- method @NonNull public String getEncodedSpec();
- method @NonNull public abstract android.net.captiveportal.CaptivePortalProbeResult getResult(int, @Nullable String);
- method @NonNull public java.net.URL getUrl();
- method @NonNull public static java.util.Collection<android.net.captiveportal.CaptivePortalProbeSpec> parseCaptivePortalProbeSpecs(@NonNull String);
- method @Nullable public static android.net.captiveportal.CaptivePortalProbeSpec parseSpecOrNull(@Nullable String);
- }
-
-}
-
package android.net.metrics {
public final class ApfProgramEvent implements android.net.metrics.IpConnectivityLog.Event {
diff --git a/packages/CaptivePortalLogin/Android.bp b/packages/CaptivePortalLogin/Android.bp
index f545a61..732acca 100644
--- a/packages/CaptivePortalLogin/Android.bp
+++ b/packages/CaptivePortalLogin/Android.bp
@@ -23,6 +23,7 @@
static_libs: [
"android-support-v4",
"metrics-constants-protos",
+ "captiveportal-lib",
],
manifest: "AndroidManifest.xml",
}
diff --git a/packages/NetworkStack/Android.bp b/packages/NetworkStack/Android.bp
index d56f97f..57a3db5 100644
--- a/packages/NetworkStack/Android.bp
+++ b/packages/NetworkStack/Android.bp
@@ -14,6 +14,15 @@
// limitations under the License.
//
+java_library {
+ name: "captiveportal-lib",
+ srcs: ["common/**/*.java"],
+ libs: [
+ "androidx.annotation_annotation",
+ ],
+ sdk_version: "system_current",
+}
+
java_defaults {
name: "NetworkStackCommon",
sdk_version: "system_current",
@@ -35,6 +44,7 @@
"networkstack-aidl-interfaces-java",
"datastallprotosnano",
"networkstackprotosnano",
+ "captiveportal-lib",
],
manifest: "AndroidManifestBase.xml",
}
diff --git a/core/java/android/net/captiveportal/CaptivePortalProbeResult.java b/packages/NetworkStack/common/CaptivePortalProbeResult.java
similarity index 94%
rename from core/java/android/net/captiveportal/CaptivePortalProbeResult.java
rename to packages/NetworkStack/common/CaptivePortalProbeResult.java
index a1d3de2..48cd48b 100644
--- a/core/java/android/net/captiveportal/CaptivePortalProbeResult.java
+++ b/packages/NetworkStack/common/CaptivePortalProbeResult.java
@@ -16,17 +16,13 @@
package android.net.captiveportal;
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.annotation.SystemApi;
-import android.annotation.TestApi;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
/**
* Result of calling isCaptivePortal().
* @hide
*/
-@SystemApi
-@TestApi
public final class CaptivePortalProbeResult {
public static final int SUCCESS_CODE = 204;
public static final int FAILED_CODE = 599;
diff --git a/core/java/android/net/captiveportal/CaptivePortalProbeSpec.java b/packages/NetworkStack/common/CaptivePortalProbeSpec.java
similarity index 95%
rename from core/java/android/net/captiveportal/CaptivePortalProbeSpec.java
rename to packages/NetworkStack/common/CaptivePortalProbeSpec.java
index b354607..bf983a5 100644
--- a/core/java/android/net/captiveportal/CaptivePortalProbeSpec.java
+++ b/packages/NetworkStack/common/CaptivePortalProbeSpec.java
@@ -19,16 +19,12 @@
import static android.net.captiveportal.CaptivePortalProbeResult.PORTAL_CODE;
import static android.net.captiveportal.CaptivePortalProbeResult.SUCCESS_CODE;
-import static com.android.internal.util.Preconditions.checkNotNull;
-
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.annotation.SystemApi;
-import android.annotation.TestApi;
import android.text.TextUtils;
import android.util.Log;
-import com.android.internal.annotations.VisibleForTesting;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
import java.net.MalformedURLException;
import java.net.URL;
@@ -40,8 +36,6 @@
import java.util.regex.PatternSyntaxException;
/** @hide */
-@SystemApi
-@TestApi
public abstract class CaptivePortalProbeSpec {
private static final String TAG = CaptivePortalProbeSpec.class.getSimpleName();
private static final String REGEX_SEPARATOR = "@@/@@";
@@ -192,4 +186,10 @@
// No value is a match ("no location header" passes the location rule for non-redirects)
return pattern == null || TextUtils.isEmpty(value) || pattern.matcher(value).matches();
}
+
+ // Throws NullPointerException if the input is null.
+ private static <T> T checkNotNull(T object) {
+ if (object == null) throw new NullPointerException();
+ return object;
+ }
}
diff --git a/tests/net/java/android/net/captiveportal/CaptivePortalProbeSpecTest.java b/packages/NetworkStack/tests/src/android/net/captiveportal/CaptivePortalProbeSpecTest.java
similarity index 100%
rename from tests/net/java/android/net/captiveportal/CaptivePortalProbeSpecTest.java
rename to packages/NetworkStack/tests/src/android/net/captiveportal/CaptivePortalProbeSpecTest.java