From 9e8ab43ab22555acff9fefca2ed433425c92fb87 Mon Sep 17 00:00:00 2001 From: Hugo Benichi Date: Mon, 5 Jun 2017 14:52:24 +0900 Subject: [PATCH] Instrument captive portal login activity Also add CAPTIVE_PORTAL_LOGIN_ACTIVITY_SSL_ERROR constants to metrics_constants.proto for counting ssl error pages shown by the captive portal login activity. Bug: 36203355 Bug: 34901696 Bug: 36532213 Test: manually tested with captive portal testing setup while watching event logs: adb logcat -b events | grep captiveportallogin 06-08 16:25:20.279 21558 21558 I sysui_action: [1004,com.android.captiveportallogin] 06-08 17:01:04.052 21558 21558 I sysui_action: [1007,com.android.captiveportallogin] Change-Id: Ia05853506d424ad4cb2c11770ae7718fbef3f01c (cherry picked from commit c61dc92fc0619d101c4b789f6305012701cc47a0) --- .../CaptivePortalLoginActivity.java | 21 ++++++++++++++++++- proto/src/metrics_constants.proto | 5 +++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java b/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java index 582b660a6e998..22f53eabb99b1 100644 --- a/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java +++ b/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java @@ -46,6 +46,9 @@ import android.webkit.WebViewClient; import android.widget.ProgressBar; import android.widget.TextView; +import com.android.internal.logging.MetricsLogger; +import com.android.internal.logging.nano.MetricsProto.MetricsEvent; + import java.io.IOException; import java.net.HttpURLConnection; import java.net.MalformedURLException; @@ -62,7 +65,14 @@ public class CaptivePortalLoginActivity extends Activity { private static final int SOCKET_TIMEOUT_MS = 10000; - private enum Result { DISMISSED, UNWANTED, WANTED_AS_IS }; + private enum Result { + DISMISSED(MetricsEvent.ACTION_CAPTIVE_PORTAL_LOGIN_RESULT_DISMISSED), + UNWANTED(MetricsEvent.ACTION_CAPTIVE_PORTAL_LOGIN_RESULT_UNWANTED), + WANTED_AS_IS(MetricsEvent.ACTION_CAPTIVE_PORTAL_LOGIN_RESULT_WANTED_AS_IS); + + final int metricsEvent; + Result(int metricsEvent) { this.metricsEvent = metricsEvent; } + }; private URL mUrl; private String mUserAgent; @@ -76,6 +86,9 @@ public class CaptivePortalLoginActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + + logMetricsEvent(MetricsEvent.ACTION_CAPTIVE_PORTAL_LOGIN_ACTIVITY); + mCm = ConnectivityManager.from(this); mNetwork = getIntent().getParcelableExtra(ConnectivityManager.EXTRA_NETWORK); mCaptivePortal = getIntent().getParcelableExtra(ConnectivityManager.EXTRA_CAPTIVE_PORTAL); @@ -172,6 +185,7 @@ public class CaptivePortalLoginActivity extends Activity { mCm.unregisterNetworkCallback(mNetworkCallback); mNetworkCallback = null; } + logMetricsEvent(result.metricsEvent); switch (result) { case DISMISSED: mCaptivePortal.reportCaptivePortalDismissed(); @@ -380,6 +394,7 @@ public class CaptivePortalLoginActivity extends Activity { @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { + logMetricsEvent(MetricsEvent.CAPTIVE_PORTAL_LOGIN_ACTIVITY_SSL_ERROR); Log.w(TAG, "SSL error (error: " + error.getPrimaryError() + " host: " + // Only show host to avoid leaking private info. Uri.parse(error.getUrl()).getHost() + " certificate: " + @@ -483,4 +498,8 @@ public class CaptivePortalLoginActivity extends Activity { } return url.getHost(); } + + private void logMetricsEvent(int event) { + MetricsLogger.action(this, event, getPackageName()); + } } diff --git a/proto/src/metrics_constants.proto b/proto/src/metrics_constants.proto index 11ea841a10f5c..fa2b1ee834190 100644 --- a/proto/src/metrics_constants.proto +++ b/proto/src/metrics_constants.proto @@ -4090,6 +4090,11 @@ message MetricsEvent { // OS: O DR SETTINGS_ASSIST_GESTURE_FIRST_TIME = 1012; + // CaptivePortalLoginActivity displays SSL error page + // CATEGORY: GLOBAL_SYSTEM_UI + // OS: O DR + CAPTIVE_PORTAL_LOGIN_ACTIVITY_SSL_ERROR = 1013; + // Add new aosp constants above this line. // END OF AOSP CONSTANTS }