From 207b6cff269dde0c52e42caf5602a33d5c4e2bb5 Mon Sep 17 00:00:00 2001 From: Chiachang Wang Date: Thu, 9 Jan 2020 13:50:55 +0800 Subject: Support reevaluation request from captive portal app CaptivePortalLogin use similar way to validate the network as NetworkMonitor. Provide API to reuse NetworkMonitor facilities for consistent captive portal detection. Bug: 134892996 Test: atest FrameworksNetTests NetworkStackTests NetworkStackNextTests Test: manually test with captive portal Wi-Fi Test: make system-api-stubs-docs-update-current-api \ test-api-stubs-docs-update-current-api Change-Id: I6f039eae7ceb18eb6c3cf15587cdc27a7fe35b00 --- core/java/android/net/CaptivePortal.java | 25 +++++++++++++++++++++++++ core/java/android/net/ICaptivePortal.aidl | 1 + 2 files changed, 26 insertions(+) (limited to 'core/java/android') diff --git a/core/java/android/net/CaptivePortal.java b/core/java/android/net/CaptivePortal.java index a66fcae7d4a2..fb35b4bde303 100644 --- a/core/java/android/net/CaptivePortal.java +++ b/core/java/android/net/CaptivePortal.java @@ -60,6 +60,18 @@ public class CaptivePortal implements Parcelable { @SystemApi @TestApi public static final int APP_RETURN_WANTED_AS_IS = 2; + /** Event offset of request codes from captive portal application. */ + private static final int APP_REQUEST_BASE = 100; + /** + * Request code from the captive portal application, indicating that the network condition may + * have changed and the network should be re-validated. + * @see ICaptivePortal#appRequest(int) + * @see android.net.INetworkMonitor#forceReevaluation(int) + * @hide + */ + @SystemApi + @TestApi + public static final int APP_REQUEST_REEVALUATION_REQUIRED = APP_REQUEST_BASE + 0; private final IBinder mBinder; @@ -135,6 +147,19 @@ public class CaptivePortal implements Parcelable { } } + /** + * Request that the system reevaluates the captive portal status. + * @hide + */ + @SystemApi + @TestApi + public void reevaluateNetwork() { + try { + ICaptivePortal.Stub.asInterface(mBinder).appRequest(APP_REQUEST_REEVALUATION_REQUIRED); + } catch (RemoteException e) { + } + } + /** * Log a captive portal login event. * @param eventId one of the CAPTIVE_PORTAL_LOGIN_* constants in metrics_constants.proto. diff --git a/core/java/android/net/ICaptivePortal.aidl b/core/java/android/net/ICaptivePortal.aidl index 707b4f699873..fe21905c7002 100644 --- a/core/java/android/net/ICaptivePortal.aidl +++ b/core/java/android/net/ICaptivePortal.aidl @@ -21,6 +21,7 @@ package android.net; * @hide */ oneway interface ICaptivePortal { + void appRequest(int request); void appResponse(int response); void logEvent(int eventId, String packageName); } -- cgit v1.2.3