From fc8022f8cfffded3d94baef3ba5e5ce936799b06 Mon Sep 17 00:00:00 2001 From: Paul Jensen Date: Tue, 9 Dec 2014 15:18:40 -0500 Subject: [PATCH] Show broken lock image when SSL errors are encountered in CaptivePortalLogin. The WebView cancels the page load by default, so showing an indicative image at least informs users that there is a security problem. bug:18505835 bug:18570703 Change-Id: Ie6dd9294eec9ca25d27e95a1cd2c95e3065de469 --- .../CaptivePortalLogin/assets/locked_page.png | Bin 0 -> 7864 bytes .../CaptivePortalLoginActivity.java | 15 +++++++++++++++ 2 files changed, 15 insertions(+) create mode 100644 packages/CaptivePortalLogin/assets/locked_page.png diff --git a/packages/CaptivePortalLogin/assets/locked_page.png b/packages/CaptivePortalLogin/assets/locked_page.png new file mode 100644 index 0000000000000000000000000000000000000000..91e1291df0dfb5d2525683be8af30c8eff1987e2 GIT binary patch literal 7864 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 literal 0 HcmV?d00001 diff --git a/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java b/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java index 1c7b033b2d53c..b8acb457277ca 100644 --- a/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java +++ b/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java @@ -30,6 +30,7 @@ import android.net.NetworkRequest; import android.net.Proxy; import android.net.ProxyInfo; import android.net.Uri; +import android.net.http.SslError; import android.os.Bundle; import android.provider.Settings; import android.provider.Settings.Global; @@ -39,6 +40,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; @@ -270,6 +272,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 {