diff --git a/packages/CaptivePortalLogin/assets/locked_page.png b/packages/CaptivePortalLogin/assets/locked_page.png new file mode 100644 index 0000000000000..91e1291df0dfb Binary files /dev/null and b/packages/CaptivePortalLogin/assets/locked_page.png differ diff --git a/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java b/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java index 7253579d97277..06e8574c9b397 100644 --- a/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java +++ b/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java @@ -28,6 +28,7 @@ import android.net.NetworkCapabilities; import android.net.NetworkRequest; import android.net.Proxy; import android.net.Uri; +import android.net.http.SslError; import android.os.Bundle; import android.provider.Settings; import android.provider.Settings.Global; @@ -37,6 +38,7 @@ import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.Window; +import android.webkit.SslErrorHandler; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; @@ -251,6 +253,19 @@ public class CaptivePortalLoginActivity extends Activity { } testForCaptivePortal(); } + + // A web page consisting of a large broken lock icon to indicate SSL failure. + final static String SSL_ERROR_HTML = "
"; + + @Override + public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { + Log.w(TAG, "SSL error; displaying broken lock icon."); + view.loadDataWithBaseURL("file:///android_asset/", SSL_ERROR_HTML, "text/HTML", + "UTF-8", null); + } } private class MyWebChromeClient extends WebChromeClient {