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

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

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: MAD comment 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
Index: chrome/browser/net/chrome_network_delegate.cc
diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/chrome_network_delegate.cc
index 545d127b789df21079f0aeae4a5142900d437290..f29f82cf0f47d9ab1281c565ec9bf4dd56c414c4 100644
--- a/chrome/browser/net/chrome_network_delegate.cc
+++ b/chrome/browser/net/chrome_network_delegate.cc
@@ -14,6 +14,8 @@
#include "chrome/browser/extensions/extension_event_router_forwarder.h"
#include "chrome/browser/extensions/extension_info_map.h"
#include "chrome/browser/extensions/extension_process_manager.h"
+#include "chrome/browser/google/google_util.h"
+#include "chrome/browser/metrics/metrics_service.h"
#include "chrome/browser/prefs/pref_member.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/task_manager/task_manager.h"
@@ -111,10 +113,12 @@ ChromeNetworkDelegate::ChromeNetworkDelegate(
const policy::URLBlacklistManager* url_blacklist_manager,
void* profile,
CookieSettings* cookie_settings,
+ bool is_incognito,
BooleanPrefMember* enable_referrers)
: event_router_(event_router),
profile_(profile),
cookie_settings_(cookie_settings),
+ is_incognito_(is_incognito),
extension_info_map_(extension_info_map),
enable_referrers_(enable_referrers),
url_blacklist_manager_(url_blacklist_manager) {
@@ -165,6 +169,10 @@ int ChromeNetworkDelegate::OnBeforeSendHeaders(
net::URLRequest* request,
const net::CompletionCallback& callback,
net::HttpRequestHeaders* headers) {
+ // Attach any applicable Chrome metrics headers. This is a best-effort attempt
+ // where failure will not cause OnBeforeSendHeaders to back out.
+ AddChromeMetricsStateHeader(request, headers);
+
return ExtensionWebRequestEventRouter::GetInstance()->OnBeforeSendHeaders(
profile_, extension_info_map_.get(), request, callback, headers);
}
@@ -304,3 +312,25 @@ bool ChromeNetworkDelegate::CanSetCookie(
return allow;
}
+
+void ChromeNetworkDelegate::AddChromeMetricsStateHeader(
+ net::URLRequest* request,
+ net::HttpRequestHeaders* headers) {
+ // Note our criteria for attaching Chrome experiment headers:
+ // 1. We only transmit to *.google.<TLD> domains. NOTE that this use of
+ // google_util helpers to check this does not guarantee that the URL is
+ // Google-owned, only that it is of the form *.google.<TLD>. In the future
+ // we may choose to reinforce this check.
+ // 2. We must verify that we are transmitting for a profile network context
+ // and not the system context. We do this by checking |profile_|, as it is
+ // NULL when we're in the system context.
+ // 3. We only transmit for non Off The Record profiles.
Ilya Sherman 2012/04/17 20:55:39 nit: s/Off The Record/Incognito
SteveT 2012/04/19 18:38:01 Done.
+ // 4. For the X-Chrome-UMA-Enabled bit, we only set it if UMA is in fact
+ // enabled for this install of Chrome.
+ if (google_util::IsGoogleDomainUrl(request->url().spec(),
+ google_util::ALLOW_SUBDOMAIN) &&
+ profile_ && !is_incognito_ &&
+ MetricsServiceHelper::IsMetricsReportingEnabled()) {
battre 2012/04/17 20:33:02 Here we still have a threading problem. The Metric
SteveT 2012/04/17 23:26:44 Ah, yes. I see that we do something similar with t
Ilya Sherman 2012/04/17 23:33:13 I think it's probably ok to use a PrefMember, and
battre 2012/04/18 17:05:05 We could probably also put the PrefMember in Metri
SteveT 2012/04/19 18:38:01 Turns out letting the PrefMember live in ProfileIO
+ headers->SetHeader("X-Chrome-UMA-Enabled", "1");
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698