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

Unified Diff: chrome/browser/net/chrome_network_delegate.h

Issue 10108026: Transmit a X-Chrome-UMA-Enabled bit to Google domains from clients that have UMA enabled. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: prefmember for metrics enabled Created 8 years, 8 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_service.h ('k') | chrome/browser/net/chrome_network_delegate.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/net/chrome_network_delegate.h
diff --git a/chrome/browser/net/chrome_network_delegate.h b/chrome/browser/net/chrome_network_delegate.h
index a582c388f1dfee223c44229f80cc69d40481944c..0bfc634b576ab5d26481c5a7fdf74037b8b27deb 100644
--- a/chrome/browser/net/chrome_network_delegate.h
+++ b/chrome/browser/net/chrome_network_delegate.h
@@ -27,26 +27,45 @@ class URLBlacklistManager;
// add hooks into the network stack.
class ChromeNetworkDelegate : public net::NetworkDelegate {
public:
+ // The level of visibility of the browser window using this delegate. This
+ // determines if we are permitted to transmit certain bits of information or
+ // not.
+ enum BrowserVisibility {
+ NORMAL,
+ INCOGNITO,
Ilya Sherman 2012/04/19 18:52:59 nit: I know it makes for longer lines, but perhaps
SteveT 2012/04/20 16:50:32 Okay, okay. Done :)
+ };
+
// If |profile| is NULL, events will be broadcasted to all profiles,
// otherwise they will only be sent to the specified profile.
- // |enable_referrers| should be initialized on the UI thread (see below)
- // beforehand. This object's owner is responsible for cleaning it up at
- // shutdown. If |cookie_settings| is NULL, all cookies are enabled,
- // otherwise, the settings are enforced on all observed network requests.
+ // |enable_referrers| and |enable_metrics| should be initialized on the UI
+ // thread (see below) beforehand, though |enable_metrics| is optional and
+ // will be treated as false if not passed in. This object's owner is
+ // responsible for cleaning it up at shutdown. If |cookie_settings| is NULL,
+ // all cookies are enabled, otherwise, the settings are enforced on all
+ // observed network requests.
ChromeNetworkDelegate(
ExtensionEventRouterForwarder* event_router,
ExtensionInfoMap* extension_info_map,
const policy::URLBlacklistManager* url_blacklist_manager,
void* profile,
CookieSettings* cookie_settings,
- BooleanPrefMember* enable_referrers);
+ BrowserVisibility visibility,
+ BooleanPrefMember* enable_referrers,
+ BooleanPrefMember* enable_metrics);
virtual ~ChromeNetworkDelegate();
- // Binds |enable_referrers| to |pref_service| and moves it to the IO thread.
- // This method should be called on the UI thread.
+ // Binds |enable_referrers| to the kReferrersEnabled pref in |pref_service|
+ // and moves it to the IO thread. This method should be called on the UI
+ // thread.
static void InitializeReferrersEnabled(BooleanPrefMember* enable_referrers,
PrefService* pref_service);
+ // Binds |enable_referrers| to the kMetricsReportingEnabled pref in
+ // |pref_service| and moves it to the IO thread. This method should be called
+ // on the UI thread.
+ static void InitializeMetricsEnabled(BooleanPrefMember* enable_metrics,
+ PrefService* pref_service);
+
private:
// NetworkDelegate implementation.
virtual int OnBeforeURLRequest(net::URLRequest* request,
@@ -83,16 +102,29 @@ class ChromeNetworkDelegate : public net::NetworkDelegate {
const std::string& cookie_line,
net::CookieOptions* options) OVERRIDE;
+ // Adds Chrome experiment and metrics state as custom headers to |headers|
+ // based on local state and |request|.
+ void AddChromeMetricsStateHeader(net::URLRequest* request,
+ net::HttpRequestHeaders* headers);
+
scoped_refptr<ExtensionEventRouterForwarder> event_router_;
void* profile_;
scoped_refptr<CookieSettings> cookie_settings_;
+ // The visibility of the browser window that uses this delegate. Note that
+ // this field is not valid if |profile_| is NULL, so always check profile_
+ // first before this field.
+ BrowserVisibility visibility_;
+
scoped_refptr<ExtensionInfoMap> extension_info_map_;
// Weak, owned by our owner.
BooleanPrefMember* enable_referrers_;
// Weak, owned by our owner.
+ BooleanPrefMember* enable_metrics_;
+
+ // Weak, owned by our owner.
const policy::URLBlacklistManager* url_blacklist_manager_;
DISALLOW_COPY_AND_ASSIGN(ChromeNetworkDelegate);
« no previous file with comments | « chrome/browser/metrics/metrics_service.h ('k') | chrome/browser/net/chrome_network_delegate.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698