shill: Report failure reasons for user-initiated conenction attempts
When user-initiated connection attmpts failed, report the failure
reasons to UMA stats.
BUG=chromium:392965
TEST=unit tests, manual test
Manual Test
1. Manually connect a chrome device to an unknown hidden SSID.
2. Browse to "chrome://histograms", and make sure there is a histogram
for "Network.Shill.WiFi.UserInitiatedConnectionFailureReason" with
a hit for bucket 9 (Out-of-range).
Change-Id: Id051fc2c2bebf7cde4363e2e1716a4a7cc4fe948
Reviewed-on: https://chromium-review.googlesource.com/207617
Reviewed-by: Peter Qiu <zqiu@chromium.org>
Tested-by: Peter Qiu <zqiu@chromium.org>
Commit-Queue: Peter Qiu <zqiu@chromium.org>
diff --git a/metrics.h b/metrics.h
index 0086fed..5e2a33b 100644
--- a/metrics.h
+++ b/metrics.h
@@ -297,6 +297,21 @@
kConnectionStatusMax
};
+ enum UserInitiatedConnectionFailureReason {
+ kUserInitiatedConnectionFailureReasonUnknown = 0,
+ kUserInitiatedConnectionFailureReasonBadPassphrase = 1,
+ kUserInitiatedConnectionFailureReasonBadWEPKey = 2,
+ kUserInitiatedConnectionFailureReasonConnect = 3,
+ kUserInitiatedConnectionFailureReasonDHCP = 4,
+ kUserInitiatedConnectionFailureReasonDNSLookup = 5,
+ kUserInitiatedConnectionFailureReasonEAPAuthentication = 6,
+ kUserInitiatedConnectionFailureReasonEAPLocalTLS = 7,
+ kUserInitiatedConnectionFailureReasonEAPRemoteTLS = 8,
+ kUserInitiatedConnectionFailureReasonOutOfRange = 9,
+ kUserInitiatedConnectionFailureReasonPinMissing = 10,
+ kUserInitiatedConnectionFailureReasonMax
+ };
+
static const char kMetricDisconnectSuffix[];
static const int kMetricDisconnectMax;
static const int kMetricDisconnectMin;
@@ -492,6 +507,9 @@
// User-initiated wifi connection attempt result.
static const char kMetricWifiUserInitiatedConnectionResult[];
+ // The reason of failed user-initiated wifi connection attempt.
+ static const char kMetricWifiUserInitiatedConnectionFailureReason[];
+
// DNS test result.
static const char kMetricFallbackDNSTestResultSuffix[];
@@ -678,6 +696,11 @@
virtual void NotifyUserInitiatedConnectionResult(const std::string &name,
int result);
+ // Notifies this object about the reason of failed user-initiated connection
+ // attempt.
+ virtual void NotifyUserInitiatedConnectionFailureReason(
+ const std::string &name, const Service::ConnectFailure failure);
+
// Notifies this object about a corrupted profile.
virtual void NotifyCorruptedProfile();