Index: chrome/browser/metrics/metrics_network_observer.cc |
diff --git a/chrome/browser/metrics/metrics_network_observer.cc b/chrome/browser/metrics/metrics_network_observer.cc |
index 9717d1d837236d1067bff08a32626a3571acfad3..dd4fcf2042cf58288ea9a946d705b782518af0fc 100644 |
--- a/chrome/browser/metrics/metrics_network_observer.cc |
+++ b/chrome/browser/metrics/metrics_network_observer.cc |
@@ -9,6 +9,20 @@ |
#include "base/threading/sequenced_worker_pool.h" |
#include "content/public/browser/browser_thread.h" |
+#if defined(OS_ANDROID) |
+#include "content/common/android/device_telephony_info.h" |
+#endif |
+ |
+#if defined(OS_ANDROID) |
+namespace { |
+ |
+ std::string GetAndroidNetworkOperatorID() { |
+ content::DeviceTelephonyInfo device_info; |
+ return device_info.GetNetworkOperator(); |
+ } |
+ |
+} |
+#endif |
MetricsNetworkObserver::MetricsNetworkObserver() |
: weak_ptr_factory_(this), |
@@ -18,6 +32,7 @@ MetricsNetworkObserver::MetricsNetworkObserver() |
net::NetworkChangeNotifier::AddConnectionTypeObserver(this); |
connection_type_ = net::NetworkChangeNotifier::GetConnectionType(); |
ProbeWifiPHYLayerProtocol(); |
+ GetNetworkOperatorID(); |
} |
MetricsNetworkObserver::~MetricsNetworkObserver() { |
@@ -41,6 +56,7 @@ void MetricsNetworkObserver::OnConnectionTypeChanged( |
connection_type_ = type; |
ProbeWifiPHYLayerProtocol(); |
+ GetNetworkOperatorID(); |
} |
SystemProfileProto::Network::ConnectionType |
@@ -104,3 +120,17 @@ void MetricsNetworkObserver::OnWifiPHYLayerProtocolResult( |
wifi_phy_layer_protocol_ = mode; |
} |
+void MetricsNetworkObserver::GetNetworkOperatorID() { |
+#if defined(OS_ANDROID) |
+ PostTaskAndReplyWithResult( |
+ content::BrowserThread::GetBlockingPool(), |
+ FROM_HERE, |
+ base::Bind(&GetAndroidNetworkOperatorID), |
+ base::Bind(&MetricsNetworkObserver::OnNetworkOperatorID, |
+ weak_ptr_factory_.GetWeakPtr())); |
+#endif |
+} |
+ |
+void MetricsNetworkObserver::OnNetworkOperatorID(std::string id) { |
+ network_operator_id_ = id; |
+} |