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

Unified Diff: chrome/browser/metrics/metrics_network_observer.h

Issue 12082090: [net] Add WifiPhyMode to SystemProfile (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: sync Created 7 years, 10 months 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
« no previous file with comments | « chrome/browser/metrics/metrics_log.cc ('k') | chrome/browser/metrics/metrics_network_observer.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/metrics/metrics_network_observer.h
diff --git a/chrome/browser/metrics/metrics_network_observer.h b/chrome/browser/metrics/metrics_network_observer.h
new file mode 100644
index 0000000000000000000000000000000000000000..fb32ec4b8df731487d98646f8811579a3719700f
--- /dev/null
+++ b/chrome/browser/metrics/metrics_network_observer.h
@@ -0,0 +1,68 @@
+// Copyright (c) 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_METRICS_METRICS_NETWORK_OBSERVER_H_
+#define CHROME_BROWSER_METRICS_METRICS_NETWORK_OBSERVER_H_
+
+#include "base/basictypes.h"
+#include "base/memory/scoped_ptr.h"
+#include "base/memory/weak_ptr.h"
+#include "chrome/common/metrics/proto/system_profile.pb.h"
+#include "net/base/net_util.h"
+#include "net/base/network_change_notifier.h"
+
+using metrics::SystemProfileProto;
+
+// Registers as observer with net::NetworkChangeNotifier and keeps track of
+// the network environment.
+class MetricsNetworkObserver
+ : public net::NetworkChangeNotifier::ConnectionTypeObserver {
+ public:
+ MetricsNetworkObserver();
+ virtual ~MetricsNetworkObserver();
+
+ // Resets the "ambiguous" flags. Call when the environment is recorded.
+ void Reset();
+
+ // ConnectionTypeObserver:
+ virtual void OnConnectionTypeChanged(
+ net::NetworkChangeNotifier::ConnectionType type) OVERRIDE;
+
+ bool connection_type_is_ambiguous() const {
+ return connection_type_is_ambiguous_;
+ }
+
+ SystemProfileProto::Network::ConnectionType connection_type() const;
+
+ bool wifi_phy_layer_protocol_is_ambiguous() const {
+ return wifi_phy_layer_protocol_is_ambiguous_;
+ }
+
+ SystemProfileProto::Network::WifiPHYLayerProtocol
+ wifi_phy_layer_protocol() const;
+
+ private:
+ // Posts a call to net::GetWifiPHYLayerProtocol on the blocking pool.
+ void ProbeWifiPHYLayerProtocol();
+ // Callback from the blocking pool with the result of
+ // net::GetWifiPHYLayerProtocol.
+ void OnWifiPHYLayerProtocolResult(net::WifiPHYLayerProtocol* mode);
+
+ base::WeakPtrFactory<MetricsNetworkObserver> weak_ptr_factory_;
+
+ // True if |connection_type_| changed during the lifetime of the log.
+ bool connection_type_is_ambiguous_;
+ // The connection type according to net::NetworkChangeNotifier.
+ net::NetworkChangeNotifier::ConnectionType connection_type_;
+
+ // True if |wifi_phy_layer_protocol_| changed during the lifetime of the log.
+ bool wifi_phy_layer_protocol_is_ambiguous_;
+ // The PHY mode of the currently associated access point obtained via
+ // net::GetWifiPHYLayerProtocol.
+ net::WifiPHYLayerProtocol wifi_phy_layer_protocol_;
+
+ DISALLOW_COPY_AND_ASSIGN(MetricsNetworkObserver);
+};
+
+#endif // CHROME_BROWSER_METRICS_METRICS_NETWORK_OBSERVER_H_
« no previous file with comments | « chrome/browser/metrics/metrics_log.cc ('k') | chrome/browser/metrics/metrics_network_observer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698