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
This commit is contained in:
Chiachang Wang 2020-01-09 13:50:55 +08:00
commit ef4a17d140

View file

@ -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.