From b0f53b84cc9e2595bed22fa68eee4ab0e3690b9e Mon Sep 17 00:00:00 2001 From: paulhu Date: Fri, 29 Mar 2019 19:21:30 +0800 Subject: [PATCH] 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 --- api/system-current.txt | 31 ------------------- api/test-current.txt | 31 ------------------- packages/CaptivePortalLogin/Android.bp | 1 + packages/NetworkStack/Android.bp | 10 ++++++ .../common}/CaptivePortalProbeResult.java | 8 ++--- .../common}/CaptivePortalProbeSpec.java | 18 +++++------ .../CaptivePortalProbeSpecTest.java | 0 7 files changed, 22 insertions(+), 77 deletions(-) rename {core/java/android/net/captiveportal => packages/NetworkStack/common}/CaptivePortalProbeResult.java (95%) rename {core/java/android/net/captiveportal => packages/NetworkStack/common}/CaptivePortalProbeSpec.java (95%) rename {tests/net/java => packages/NetworkStack/tests/src}/android/net/captiveportal/CaptivePortalProbeSpecTest.java (100%) diff --git a/api/system-current.txt b/api/system-current.txt index 8e0992848a0f4..373ff18aa3822 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -3328,37 +3328,6 @@ package android.net.apf { } -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 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 7f86d5d665eb2..3c7e7610d4834 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -747,37 +747,6 @@ package android.net.apf { } -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 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 f545a61aff4f5..732acca6094fd 100644 --- a/packages/CaptivePortalLogin/Android.bp +++ b/packages/CaptivePortalLogin/Android.bp @@ -23,6 +23,7 @@ android_app { 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 d56f97f55f7eb..57a3db586c539 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 @@ android_library { "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 95% rename from core/java/android/net/captiveportal/CaptivePortalProbeResult.java rename to packages/NetworkStack/common/CaptivePortalProbeResult.java index a1d3de248a96b..48cd48b30085b 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 b354607b88566..bf983a50ab512 100644 --- a/core/java/android/net/captiveportal/CaptivePortalProbeSpec.java +++ b/packages/NetworkStack/common/CaptivePortalProbeSpec.java @@ -19,16 +19,12 @@ package android.net.captiveportal; 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.Pattern; 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 @@ public abstract class CaptivePortalProbeSpec { // 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 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