Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1180)

Unified Diff: chrome/browser/chromeos/net/network_portal_detector_impl.cc

Issue 99223009: Fixed current OOBE captive portal metrics. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix. Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/net/network_portal_detector_impl.cc
diff --git a/chrome/browser/chromeos/net/network_portal_detector_impl.cc b/chrome/browser/chromeos/net/network_portal_detector_impl.cc
index b92dfe7633144f01997bb6c1ed44f64d797691bc..a1e9f09473c284d40dd02e2c217ee7e1480c6372 100644
--- a/chrome/browser/chromeos/net/network_portal_detector_impl.cc
+++ b/chrome/browser/chromeos/net/network_portal_detector_impl.cc
@@ -39,31 +39,25 @@ const int kProxyChangeDelaySec = 1;
// Delay between consecutive portal checks for a network in lazy mode.
const int kLazyCheckIntervalSec = 5;
-const char kCaptivePortalStatusUnknown[] = "Unknown";
-const char kCaptivePortalStatusOffline[] = "Offline";
-const char kCaptivePortalStatusOnline[] = "Online";
-const char kCaptivePortalStatusPortal[] = "Portal";
-const char kCaptivePortalStatusProxyAuthRequired[] =
- "Proxy authentication required";
-const char kCaptivePortalStatusUnrecognized[] = "Unrecognized";
-
-std::string CaptivePortalStatusString(
- NetworkPortalDetectorImpl::CaptivePortalStatus status) {
- switch (status) {
- case NetworkPortalDetectorImpl::CAPTIVE_PORTAL_STATUS_UNKNOWN:
- return kCaptivePortalStatusUnknown;
- case NetworkPortalDetectorImpl::CAPTIVE_PORTAL_STATUS_OFFLINE:
- return kCaptivePortalStatusOffline;
- case NetworkPortalDetectorImpl::CAPTIVE_PORTAL_STATUS_ONLINE:
- return kCaptivePortalStatusOnline;
- case NetworkPortalDetectorImpl::CAPTIVE_PORTAL_STATUS_PORTAL:
- return kCaptivePortalStatusPortal;
- case NetworkPortalDetectorImpl::CAPTIVE_PORTAL_STATUS_PROXY_AUTH_REQUIRED:
- return kCaptivePortalStatusProxyAuthRequired;
- case NetworkPortalDetectorImpl::CAPTIVE_PORTAL_STATUS_COUNT:
- NOTREACHED();
+void RecordDiscrepancyWithShill(
+ const NetworkState* network,
+ const NetworkPortalDetector::CaptivePortalStatus status) {
+ if (network->connection_state() == shill::kStateOnline) {
+ UMA_HISTOGRAM_ENUMERATION(
+ "CaptivePortal.OOBE.DiscrepancyWithShill_Online",
+ status,
+ NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_COUNT);
+ } else if (network->connection_state() == shill::kStatePortal) {
+ UMA_HISTOGRAM_ENUMERATION(
+ "CaptivePortal.OOBE.DiscrepancyWithShill_RestrictedPool",
+ status,
+ NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_COUNT);
+ } else if (network->connection_state() == shill::kStateOffline) {
+ UMA_HISTOGRAM_ENUMERATION(
+ "CaptivePortal.OOBE.DiscrepancyWithShill_Offline",
+ status,
+ NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_COUNT);
}
- return kCaptivePortalStatusUnrecognized;
}
} // namespace
@@ -452,11 +446,6 @@ bool NetworkPortalDetectorImpl::IsCheckingForPortal() const {
void NetworkPortalDetectorImpl::SetCaptivePortalState(
const NetworkState* network,
const CaptivePortalState& state) {
- if (!detection_start_time_.is_null()) {
- UMA_HISTOGRAM_TIMES("CaptivePortal.OOBE.DetectionDuration",
- GetCurrentTimeTicks() - detection_start_time_);
- }
-
if (!network) {
NotifyPortalDetectionCompleted(network, state);
return;
@@ -472,6 +461,15 @@ void NetworkPortalDetectorImpl::SetCaptivePortalState(
<< "id=" << network->guid() << ", "
<< "status=" << CaptivePortalStatusString(state.status) << ", "
<< "response_code=" << state.response_code;
+
+ // Record detection duration iff detection result differs from the
+ // previous one for this network. The reason is to record only
+ // detection duration when network changes it's state, as we're
+ // interested only on distribution of detection duration, not
Nikita (slow) 2014/01/09 13:48:56 nit: update comment, all stats are reported only o
ygorshenin1 2014/01/09 14:59:35 Done.
+ // distribution of detection duration multiplied by number of
+ // checks.
+ RecordDetectionStats(network, state.status);
+
portal_state_map_[network->path()] = state;
}
NotifyPortalDetectionCompleted(network, state);
@@ -505,4 +503,44 @@ int NetworkPortalDetectorImpl::GetRequestTimeoutSec() const {
return attempt_count_ * kBaseRequestTimeoutSec;
}
+void NetworkPortalDetectorImpl::RecordDetectionStats(
+ const NetworkState* network,
+ CaptivePortalStatus status) {
+ // Don't record stats for offline state.
+ if (!network)
+ return;
+
+ if (!detection_start_time_.is_null()) {
+ UMA_HISTOGRAM_MEDIUM_TIMES("CaptivePortal.OOBE.DetectionDuration",
+ GetCurrentTimeTicks() - detection_start_time_);
+ }
+ UMA_HISTOGRAM_ENUMERATION("CaptivePortal.OOBE.DetectionResult", status,
Nikita (slow) 2014/01/09 13:48:56 nit: status on a separate line.
ygorshenin1 2014/01/09 14:59:35 Done.
+ NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_COUNT);
+ switch (status) {
+ case NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_UNKNOWN:
+ NOTREACHED();
+ break;
+ case NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_OFFLINE:
+ if (network->connection_state() == shill::kStateOnline ||
+ network->connection_state() == shill::kStatePortal)
+ RecordDiscrepancyWithShill(network, status);
Nikita (slow) 2014/01/09 13:48:56 nit: {}
ygorshenin1 2014/01/09 14:59:35 Done.
+ break;
+ case NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE:
+ if (network->connection_state() != shill::kStateOnline)
+ RecordDiscrepancyWithShill(network, status);
+ break;
+ case NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL:
+ if (network->connection_state() != shill::kStatePortal)
+ RecordDiscrepancyWithShill(network, status);
+ break;
+ case NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PROXY_AUTH_REQUIRED:
+ if (network->connection_state() != shill::kStateOnline)
+ RecordDiscrepancyWithShill(network, status);
+ break;
+ case NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_COUNT:
+ NOTREACHED();
+ break;
+ }
+}
+
} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698