diff options
| author | Chalard Jean <jchalard@google.com> | 2018-05-23 18:46:43 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2018-05-23 18:46:43 +0000 |
| commit | b0662ceb31d6b83dd2ecbbe4c7cbf67b43bdba7f (patch) | |
| tree | 12de1151396e64d92956f56660f58d7636a879b0 | |
| parent | 7f247b5da3168117f09afe1403c3c62ddcef32be (diff) | |
| parent | 92ad979af41cbdcae977bcbcb93ba5e67fcebf3a (diff) | |
| download | platform_packages_modules_CaptivePortalLogin-pie-dr1-dev.tar.gz platform_packages_modules_CaptivePortalLogin-pie-dr1-dev.tar.bz2 platform_packages_modules_CaptivePortalLogin-pie-dr1-dev.zip | |
Merge "Use CaptivePortalProbeSpec method in portal app" into pi-devpie-vts-releasepie-s2-releasepie-release-2pie-releasepie-r2-s2-releasepie-r2-s1-releasepie-r2-releasepie-qpr1-s3-releasepie-qpr1-s2-releasepie-qpr1-s1-releasepie-qpr1-releasepie-dr1-releasepie-dr1-devpie-devpie-cts-releasepie-angle-preview-dev
| -rw-r--r-- | src/com/android/captiveportallogin/CaptivePortalLoginActivity.java | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java b/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java index 91c04fa..3630005 100644 --- a/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java +++ b/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java @@ -16,6 +16,9 @@ package com.android.captiveportallogin; +import static android.net.ConnectivityManager.EXTRA_CAPTIVE_PORTAL_PROBE_SPEC; +import static android.net.captiveportal.CaptivePortalProbeSpec.HTTP_LOCATION_HEADER_NAME; + import android.app.Activity; import android.app.LoadedApk; import android.content.Context; @@ -29,6 +32,7 @@ import android.net.NetworkCapabilities; import android.net.NetworkRequest; import android.net.Proxy; import android.net.Uri; +import android.net.captiveportal.CaptivePortalProbeSpec; import android.net.dns.ResolvUtil; import android.net.http.SslError; import android.net.wifi.WifiInfo; @@ -85,6 +89,7 @@ public class CaptivePortalLoginActivity extends Activity { }; private URL mUrl; + private CaptivePortalProbeSpec mProbeSpec; private String mUserAgent; private Network mNetwork; private CaptivePortal mCaptivePortal; @@ -118,6 +123,14 @@ public class CaptivePortalLoginActivity extends Activity { Log.d(TAG, String.format("onCreate for %s", mUrl.toString())); } + final String spec = getIntent().getStringExtra(EXTRA_CAPTIVE_PORTAL_PROBE_SPEC); + try { + mProbeSpec = CaptivePortalProbeSpec.parseSpecOrNull(spec); + } catch (Exception e) { + // Make extra sure that invalid configurations do not cause crashes + mProbeSpec = null; + } + // Also initializes proxy system properties. mCm.bindProcessToNetwork(mNetwork); mCm.setProcessDefaultNetworkForHostResolution( @@ -329,6 +342,7 @@ public class CaptivePortalLoginActivity extends Activity { } HttpURLConnection urlConnection = null; int httpResponseCode = 500; + String locationHeader = null; try { urlConnection = (HttpURLConnection) network.openConnection(mUrl); urlConnection.setInstanceFollowRedirects(false); @@ -343,6 +357,7 @@ public class CaptivePortalLoginActivity extends Activity { urlConnection.getInputStream(); httpResponseCode = urlConnection.getResponseCode(); + locationHeader = urlConnection.getHeaderField(HTTP_LOCATION_HEADER_NAME); if (DBG) { Log.d(TAG, "probe at " + mUrl + " ret=" + httpResponseCode + @@ -353,13 +368,20 @@ public class CaptivePortalLoginActivity extends Activity { } finally { if (urlConnection != null) urlConnection.disconnect(); } - if (httpResponseCode == 204) { + if (isDismissed(httpResponseCode, locationHeader, mProbeSpec)) { done(Result.DISMISSED); } } }).start(); } + private static boolean isDismissed( + int httpResponseCode, String locationHeader, CaptivePortalProbeSpec probeSpec) { + return (probeSpec != null) + ? probeSpec.getResult(httpResponseCode, locationHeader).isSuccessful() + : (httpResponseCode == 204); + } + private class MyWebViewClient extends WebViewClient { private static final String INTERNAL_ASSETS = "file:///android_asset/"; |
