Index: net/base/network_change_notifier.cc |
diff --git a/net/base/network_change_notifier.cc b/net/base/network_change_notifier.cc |
index 638964a25d29ad12016b9d20ad64cf82df7ef222..11f9d363bac678a8329d41c5166b6914a14a619b 100644 |
--- a/net/base/network_change_notifier.cc |
+++ b/net/base/network_change_notifier.cc |
@@ -14,6 +14,12 @@ |
#include "net/url_request/url_request.h" |
#include "url/gurl.h" |
+#if defined(OS_ANDROID) |
+#include "base/metrics/sparse_histogram.h" |
+#include "base/strings/string_number_conversions.h" |
+#include "net/android/network_library.h" |
+#endif |
+ |
#if defined(OS_WIN) |
#include "net/base/network_change_notifier_win.h" |
#elif defined(OS_LINUX) && !defined(OS_CHROMEOS) |
@@ -228,6 +234,24 @@ class HistogramWatcher |
} else { |
UMA_HISTOGRAM_MEDIUM_TIMES("NCN.OfflineChange", state_duration); |
} |
+ |
+#if defined(OS_ANDROID) |
+ // On a connection type change to 2/3/4G, log the network operator MCC/MNC. |
+ // Log zero in other cases. |
+ unsigned mcc_mnc = 0; |
+ if (type == NetworkChangeNotifier::CONNECTION_2G || |
+ type == NetworkChangeNotifier::CONNECTION_3G || |
+ type == NetworkChangeNotifier::CONNECTION_4G) { |
+ // Log zero if not perfectly converted. |
+ if (!base::StringToUint( |
+ net::android::GetTelephonyNetworkOperator(), &mcc_mnc)) { |
+ mcc_mnc = 0; |
+ } |
+ } |
+ UMA_HISTOGRAM_SPARSE_SLOWLY( |
+ "NCN.NetworkOperatorMCCMNC_ConnectionChange", mcc_mnc); |
+#endif |
+ |
UMA_HISTOGRAM_MEDIUM_TIMES( |
"NCN.IPAddressChangeToConnectionTypeChange", |
now - last_ip_address_change_); |