summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/BUILD.gn1
-rw-r--r--chrome/browser/DEPS1
-rw-r--r--chrome/browser/profiles/profile_downloader.cc4
-rw-r--r--chrome/browser/spellchecker/feedback_sender.cc3
-rw-r--r--chrome/browser/spellchecker/spellcheck_hunspell_dictionary.cc3
-rw-r--r--chrome/browser/spellchecker/spelling_service_client.cc3
-rw-r--r--chrome/browser/sync/glue/sync_backend_host_core.cc14
-rw-r--r--chrome/browser/sync/test/test_http_bridge_factory.cc4
-rw-r--r--chrome/browser/sync/test/test_http_bridge_factory.h4
-rw-r--r--chrome/chrome_browser.gypi1
-rw-r--r--components/autofill.gypi1
-rw-r--r--components/autofill/core/browser/BUILD.gn1
-rw-r--r--components/autofill/core/browser/DEPS1
-rw-r--r--components/autofill/core/browser/autofill_download_manager.cc3
-rw-r--r--components/autofill/core/browser/wallet/real_pan_wallet_client.cc3
-rw-r--r--components/data_use_measurement/core/data_use_user_data.cc26
-rw-r--r--components/data_use_measurement/core/data_use_user_data.h13
-rw-r--r--components/domain_reliability.gypi1
-rw-r--r--components/domain_reliability/BUILD.gn1
-rw-r--r--components/domain_reliability/DEPS1
-rw-r--r--components/domain_reliability/uploader.cc3
-rw-r--r--components/google.gypi1
-rw-r--r--components/google/core/browser/BUILD.gn1
-rw-r--r--components/google/core/browser/DEPS1
-rw-r--r--components/google/core/browser/google_url_tracker.cc4
-rw-r--r--components/invalidation.gypi1
-rw-r--r--components/invalidation/impl/BUILD.gn1
-rw-r--r--components/invalidation/impl/DEPS1
-rw-r--r--components/invalidation/impl/gcm_network_channel.cc3
-rw-r--r--components/metrics.gypi1
-rw-r--r--components/metrics/BUILD.gn1
-rw-r--r--components/metrics/net/DEPS1
-rw-r--r--components/metrics/net/net_metrics_log_uploader.cc3
-rw-r--r--components/omnibox.gypi1
-rw-r--r--components/omnibox/browser/BUILD.gn1
-rw-r--r--components/omnibox/browser/DEPS1
-rw-r--r--components/omnibox/browser/base_search_provider.cc3
-rw-r--r--components/omnibox/browser/search_provider.cc3
-rw-r--r--components/omnibox/browser/zero_suggest_provider.cc3
-rw-r--r--components/policy/core/common/BUILD.gn1
-rw-r--r--components/policy/core/common/DEPS1
-rw-r--r--components/policy/core/common/cloud/device_management_service.cc3
-rw-r--r--components/policy/core/common/cloud/external_policy_data_fetcher.cc3
-rw-r--r--components/policy/core/common/cloud/user_info_fetcher.cc3
-rw-r--r--components/policy/policy_common.gypi1
-rw-r--r--components/rappor.gypi1
-rw-r--r--components/rappor/BUILD.gn1
-rw-r--r--components/rappor/DEPS1
-rw-r--r--components/rappor/log_uploader.cc3
-rw-r--r--components/translate.gypi1
-rw-r--r--components/translate/DEPS1
-rw-r--r--components/translate/core/browser/BUILD.gn1
-rw-r--r--components/translate/core/browser/translate_url_fetcher.cc3
-rw-r--r--components/variations.gypi1
-rw-r--r--components/variations/service/BUILD.gn1
-rw-r--r--components/variations/service/DEPS1
-rw-r--r--components/variations/service/variations_service.cc4
-rw-r--r--sync/internal_api/http_bridge.cc19
-rw-r--r--sync/internal_api/http_bridge_unittest.cc20
-rw-r--r--sync/internal_api/public/http_bridge.h14
-rw-r--r--sync/internal_api/public/http_post_provider_factory.h10
-rw-r--r--sync/internal_api/sync_manager_impl_unittest.cc3
-rw-r--r--sync/internal_api/syncapi_server_connection_manager_unittest.cc4
-rw-r--r--sync/test/fake_server/fake_server_http_post_provider.cc4
-rw-r--r--sync/test/fake_server/fake_server_http_post_provider.h5
-rw-r--r--sync/tools/sync_client.cc3
-rw-r--r--tools/metrics/histograms/histograms.xml28
67 files changed, 238 insertions, 26 deletions
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index e181102..59ea9d9 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -113,6 +113,7 @@ source_set("browser") {
"//components/content_settings/core/common",
"//components/crx_file",
"//components/data_reduction_proxy/core/browser",
+ "//components/data_use_measurement/core",
"//components/device_event_log",
"//components/domain_reliability",
"//components/enhanced_bookmarks",
diff --git a/chrome/browser/DEPS b/chrome/browser/DEPS
index 19370fb..73ee578 100644
--- a/chrome/browser/DEPS
+++ b/chrome/browser/DEPS
@@ -33,6 +33,7 @@ include_rules = [
"+components/crash",
"+components/crx_file",
"+components/data_reduction_proxy",
+ "+components/data_use_measurement/core",
"+components/device_event_log",
"+components/dom_distiller",
"+components/domain_reliability",
diff --git a/chrome/browser/profiles/profile_downloader.cc b/chrome/browser/profiles/profile_downloader.cc
index f6364fd..04f052c 100644
--- a/chrome/browser/profiles/profile_downloader.cc
+++ b/chrome/browser/profiles/profile_downloader.cc
@@ -23,6 +23,7 @@
#include "chrome/browser/signin/chrome_signin_client_factory.h"
#include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
#include "chrome/browser/signin/signin_manager_factory.h"
+#include "components/data_use_measurement/core/data_use_user_data.h"
#include "components/signin/core/browser/account_fetcher_service.h"
#include "components/signin/core/browser/profile_oauth2_token_service.h"
#include "components/signin/core/browser/signin_client.h"
@@ -285,6 +286,9 @@ void ProfileDownloader::FetchImageData() {
VLOG(1) << "Fetching profile image from " << image_url_with_size;
profile_image_fetcher_ = net::URLFetcher::Create(
GURL(image_url_with_size), net::URLFetcher::GET, this);
+ data_use_measurement::DataUseUserData::AttachToFetcher(
+ profile_image_fetcher_.get(),
+ data_use_measurement::DataUseUserData::PROFILE_DOWNLOADER);
profile_image_fetcher_->SetRequestContext(
delegate_->GetBrowserProfile()->GetRequestContext());
profile_image_fetcher_->SetLoadFlags(net::LOAD_DO_NOT_SEND_COOKIES |
diff --git a/chrome/browser/spellchecker/feedback_sender.cc b/chrome/browser/spellchecker/feedback_sender.cc
index 35aab8b..d9d1ffe 100644
--- a/chrome/browser/spellchecker/feedback_sender.cc
+++ b/chrome/browser/spellchecker/feedback_sender.cc
@@ -48,6 +48,7 @@
#include "chrome/common/spellcheck_common.h"
#include "chrome/common/spellcheck_marker.h"
#include "chrome/common/spellcheck_messages.h"
+#include "components/data_use_measurement/core/data_use_user_data.h"
#include "content/public/browser/render_process_host.h"
#include "google_apis/google_api_keys.h"
#include "net/base/load_flags.h"
@@ -410,6 +411,8 @@ void FeedbackSender::SendFeedback(const std::vector<Misspelling>& feedback_data,
net::URLFetcher* sender =
net::URLFetcher::Create(kUrlFetcherId, feedback_service_url_,
net::URLFetcher::POST, this).release();
+ data_use_measurement::DataUseUserData::AttachToFetcher(
+ sender, data_use_measurement::DataUseUserData::SPELL_CHECKER);
sender->SetLoadFlags(net::LOAD_DO_NOT_SEND_COOKIES |
net::LOAD_DO_NOT_SAVE_COOKIES);
sender->SetUploadData("application/json", feedback);
diff --git a/chrome/browser/spellchecker/spellcheck_hunspell_dictionary.cc b/chrome/browser/spellchecker/spellcheck_hunspell_dictionary.cc
index aad12e1..8ce3037 100644
--- a/chrome/browser/spellchecker/spellcheck_hunspell_dictionary.cc
+++ b/chrome/browser/spellchecker/spellcheck_hunspell_dictionary.cc
@@ -12,6 +12,7 @@
#include "chrome/browser/spellchecker/spellcheck_service.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/common/spellcheck_common.h"
+#include "components/data_use_measurement/core/data_use_user_data.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/render_process_host.h"
#include "net/base/load_flags.h"
@@ -244,6 +245,8 @@ void SpellcheckHunspellDictionary::DownloadDictionary(GURL url) {
OnHunspellDictionaryDownloadBegin(language_));
fetcher_ = net::URLFetcher::Create(url, net::URLFetcher::GET, this);
+ data_use_measurement::DataUseUserData::AttachToFetcher(
+ fetcher_.get(), data_use_measurement::DataUseUserData::SPELL_CHECKER);
fetcher_->SetRequestContext(request_context_getter_);
fetcher_->SetLoadFlags(
net::LOAD_DO_NOT_SEND_COOKIES | net::LOAD_DO_NOT_SAVE_COOKIES);
diff --git a/chrome/browser/spellchecker/spelling_service_client.cc b/chrome/browser/spellchecker/spelling_service_client.cc
index bd3014d..888af4a 100644
--- a/chrome/browser/spellchecker/spelling_service_client.cc
+++ b/chrome/browser/spellchecker/spelling_service_client.cc
@@ -18,6 +18,7 @@
#include "chrome/common/pref_names.h"
#include "chrome/common/spellcheck_common.h"
#include "chrome/common/spellcheck_result.h"
+#include "components/data_use_measurement/core/data_use_user_data.h"
#include "components/user_prefs/user_prefs.h"
#include "content/public/browser/browser_context.h"
#include "google_apis/google_api_keys.h"
@@ -105,6 +106,8 @@ bool SpellingServiceClient::RequestTextCheck(
GURL url = GURL(kSpellingServiceURL);
net::URLFetcher* fetcher = CreateURLFetcher(url).release();
+ data_use_measurement::DataUseUserData::AttachToFetcher(
+ fetcher, data_use_measurement::DataUseUserData::SPELL_CHECKER);
fetcher->SetRequestContext(context->GetRequestContext());
fetcher->SetUploadData("application/json", request);
fetcher->SetLoadFlags(
diff --git a/chrome/browser/sync/glue/sync_backend_host_core.cc b/chrome/browser/sync/glue/sync_backend_host_core.cc
index 4634c81..4f5cd45 100644
--- a/chrome/browser/sync/glue/sync_backend_host_core.cc
+++ b/chrome/browser/sync/glue/sync_backend_host_core.cc
@@ -4,12 +4,14 @@
#include "chrome/browser/sync/glue/sync_backend_host_core.h"
+#include "base/bind.h"
#include "base/files/file_util.h"
#include "base/location.h"
#include "base/metrics/histogram.h"
#include "base/single_thread_task_runner.h"
#include "chrome/browser/sync/glue/local_device_info_provider_impl.h"
#include "chrome/browser/sync/glue/sync_backend_registrar.h"
+#include "components/data_use_measurement/core/data_use_user_data.h"
#include "components/invalidation/public/invalidation_util.h"
#include "components/invalidation/public/object_id_invalidation_map.h"
#include "components/sync_driver/invalidation_adapter.h"
@@ -38,6 +40,10 @@ namespace syncer {
class InternalComponentsFactory;
} // namespace syncer
+namespace net {
+class URLFetcher;
+}
+
namespace {
// Enums for UMAs.
@@ -49,6 +55,11 @@ enum SyncBackendInitState {
SYNC_BACKEND_INIT_STATE_COUNT
};
+void BindFetcherToDataTracker(net::URLFetcher* fetcher) {
+ data_use_measurement::DataUseUserData::AttachToFetcher(
+ fetcher, data_use_measurement::DataUseUserData::SYNC);
+}
+
} // namespace
namespace browser_sync {
@@ -425,7 +436,8 @@ void SyncBackendHostCore::DoInitialize(
// Finish initializing the HttpBridgeFactory. We do this here because
// building the user agent may block on some platforms.
- options->http_bridge_factory->Init(options->sync_user_agent);
+ options->http_bridge_factory->Init(options->sync_user_agent,
+ base::Bind(&BindFetcherToDataTracker));
// Blow away the partial or corrupt sync data folder before doing any more
// initialization, if necessary.
diff --git a/chrome/browser/sync/test/test_http_bridge_factory.cc b/chrome/browser/sync/test/test_http_bridge_factory.cc
index 23b2c0e..f9ee282 100644
--- a/chrome/browser/sync/test/test_http_bridge_factory.cc
+++ b/chrome/browser/sync/test/test_http_bridge_factory.cc
@@ -31,7 +31,9 @@ TestHttpBridgeFactory::TestHttpBridgeFactory() {}
TestHttpBridgeFactory::~TestHttpBridgeFactory() {}
-void TestHttpBridgeFactory::Init(const std::string& user_agent) {}
+void TestHttpBridgeFactory::Init(
+ const std::string& user_agent,
+ const syncer::BindToTrackerCallback& bind_to_tracker_callback) {}
syncer::HttpPostProviderInterface* TestHttpBridgeFactory::Create() {
return new TestHttpBridge();
diff --git a/chrome/browser/sync/test/test_http_bridge_factory.h b/chrome/browser/sync/test/test_http_bridge_factory.h
index 07829c9..4ee1855 100644
--- a/chrome/browser/sync/test/test_http_bridge_factory.h
+++ b/chrome/browser/sync/test/test_http_bridge_factory.h
@@ -40,7 +40,9 @@ class TestHttpBridgeFactory : public syncer::HttpPostProviderFactory {
~TestHttpBridgeFactory() override;
// syncer::HttpPostProviderFactory:
- void Init(const std::string& user_agent) override;
+ void Init(
+ const std::string& user_agent,
+ const syncer::BindToTrackerCallback& bind_to_tracker_callback) override;
syncer::HttpPostProviderInterface* Create() override;
void Destroy(syncer::HttpPostProviderInterface* http) override;
};
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index 4dcb6a5..d13ff31 100644
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -3128,6 +3128,7 @@
'../components/components.gyp:content_settings_core_common',
'../components/components.gyp:crx_file',
'../components/components.gyp:data_reduction_proxy_core_browser',
+ '../components/components.gyp:data_use_measurement_core',
'../components/components.gyp:domain_reliability',
'../components/components.gyp:enhanced_bookmarks',
'../components/components.gyp:favicon_base',
diff --git a/components/autofill.gypi b/components/autofill.gypi
index 0ef8678..c13ad09 100644
--- a/components/autofill.gypi
+++ b/components/autofill.gypi
@@ -87,6 +87,7 @@
'autofill_core_common',
'components_resources.gyp:components_resources',
'components_strings.gyp:components_strings',
+ 'data_use_measurement_core',
'infobars_core',
'keyed_service_core',
'os_crypt',
diff --git a/components/autofill/core/browser/BUILD.gn b/components/autofill/core/browser/BUILD.gn
index d815e8c..ce5b85d 100644
--- a/components/autofill/core/browser/BUILD.gn
+++ b/components/autofill/core/browser/BUILD.gn
@@ -142,6 +142,7 @@ source_set("browser") {
"//base:i18n",
"//base:prefs",
"//components/autofill/core/common",
+ "//components/data_use_measurement/core",
"//components/infobars/core",
"//components/keyed_service/core",
"//components/os_crypt",
diff --git a/components/autofill/core/browser/DEPS b/components/autofill/core/browser/DEPS
index d9c7bb8..1aaa249 100644
--- a/components/autofill/core/browser/DEPS
+++ b/components/autofill/core/browser/DEPS
@@ -1,4 +1,5 @@
include_rules = [
+ "+components/data_use_measurement/core",
"+components/infobars/core",
"+components/keyed_service/core",
"+components/signin/core/browser",
diff --git a/components/autofill/core/browser/autofill_download_manager.cc b/components/autofill/core/browser/autofill_download_manager.cc
index bf7473b..b6486cd 100644
--- a/components/autofill/core/browser/autofill_download_manager.cc
+++ b/components/autofill/core/browser/autofill_download_manager.cc
@@ -14,6 +14,7 @@
#include "components/autofill/core/browser/autofill_xml_parser.h"
#include "components/autofill/core/browser/form_structure.h"
#include "components/autofill/core/common/autofill_pref_names.h"
+#include "components/data_use_measurement/core/data_use_user_data.h"
#include "components/variations/net/variations_http_header_provider.h"
#include "net/base/load_flags.h"
#include "net/http/http_request_headers.h"
@@ -183,6 +184,8 @@ bool AutofillDownloadManager::StartRequest(
net::URLFetcher* fetcher =
net::URLFetcher::Create(fetcher_id_for_unittest_++, request_url,
net::URLFetcher::POST, this).release();
+ data_use_measurement::DataUseUserData::AttachToFetcher(
+ fetcher, data_use_measurement::DataUseUserData::AUTOFILL);
url_fetchers_[fetcher] = request_data;
fetcher->SetAutomaticallyRetryOn5xx(false);
fetcher->SetRequestContext(request_context);
diff --git a/components/autofill/core/browser/wallet/real_pan_wallet_client.cc b/components/autofill/core/browser/wallet/real_pan_wallet_client.cc
index 94134d7..d9055b5 100644
--- a/components/autofill/core/browser/wallet/real_pan_wallet_client.cc
+++ b/components/autofill/core/browser/wallet/real_pan_wallet_client.cc
@@ -16,6 +16,7 @@
#include "base/values.h"
#include "components/autofill/core/browser/credit_card.h"
#include "components/autofill/core/common/autofill_switches.h"
+#include "components/data_use_measurement/core/data_use_user_data.h"
#include "google_apis/gaia/identity_provider.h"
#include "net/base/escape.h"
#include "net/base/load_flags.h"
@@ -218,6 +219,8 @@ void RealPanWalletClient::OnGetTokenFailure(
void RealPanWalletClient::CreateRequest() {
request_ = net::URLFetcher::Create(0, GetUnmaskCardRequestUrl(),
net::URLFetcher::POST, this);
+ data_use_measurement::DataUseUserData::AttachToFetcher(
+ request_.get(), data_use_measurement::DataUseUserData::AUTOFILL);
request_->SetRequestContext(context_getter_.get());
request_->SetLoadFlags(net::LOAD_DO_NOT_SAVE_COOKIES |
net::LOAD_DO_NOT_SEND_COOKIES | net::LOAD_DISABLE_CACHE);
diff --git a/components/data_use_measurement/core/data_use_user_data.cc b/components/data_use_measurement/core/data_use_user_data.cc
index d5870b5..ff750a9 100644
--- a/components/data_use_measurement/core/data_use_user_data.cc
+++ b/components/data_use_measurement/core/data_use_user_data.cc
@@ -30,6 +30,32 @@ std::string DataUseUserData::GetServiceNameAsString(ServiceName service_name) {
return "Suggestions";
case NOT_TAGGED:
return "NotTagged";
+ case TRANSLATE:
+ return "Translate";
+ case SYNC:
+ return "Sync";
+ case OMNIBOX:
+ return "Omnibox";
+ case INVALIDATION:
+ return "Invalidation";
+ case RAPPOR:
+ return "Rappor";
+ case VARIATIONS:
+ return "Variations";
+ case UMA:
+ return "UMA";
+ case DOMAIN_RELIABILITY:
+ return "DomainReliability";
+ case PROFILE_DOWNLOADER:
+ return "ProfileDownloader";
+ case GOOGLE_URL_TRACKER:
+ return "GoogleURLTracker";
+ case AUTOFILL:
+ return "Autofill";
+ case POLICY:
+ return "Policy";
+ case SPELL_CHECKER:
+ return "SpellChecker";
}
return "INVALID";
}
diff --git a/components/data_use_measurement/core/data_use_user_data.h b/components/data_use_measurement/core/data_use_user_data.h
index 55bdd1f..96b5479 100644
--- a/components/data_use_measurement/core/data_use_user_data.h
+++ b/components/data_use_measurement/core/data_use_user_data.h
@@ -26,6 +26,19 @@ class DataUseUserData : public base::SupportsUserData::Data {
enum ServiceName {
NOT_TAGGED,
SUGGESTIONS,
+ TRANSLATE,
+ SYNC,
+ OMNIBOX,
+ INVALIDATION,
+ RAPPOR,
+ VARIATIONS,
+ UMA,
+ DOMAIN_RELIABILITY,
+ PROFILE_DOWNLOADER,
+ GOOGLE_URL_TRACKER,
+ AUTOFILL,
+ POLICY,
+ SPELL_CHECKER,
};
explicit DataUseUserData(ServiceName service_name);
diff --git a/components/domain_reliability.gypi b/components/domain_reliability.gypi
index 9b1d7d5..4412b61 100644
--- a/components/domain_reliability.gypi
+++ b/components/domain_reliability.gypi
@@ -14,6 +14,7 @@
'dependencies': [
'../base/base.gyp:base',
'../base/base.gyp:base_prefs',
+ '../components/components.gyp:data_use_measurement_core',
'../components/components.gyp:keyed_service_core',
'../content/content.gyp:content_browser',
'../net/net.gyp:net',
diff --git a/components/domain_reliability/BUILD.gn b/components/domain_reliability/BUILD.gn
index fe1c23c..add26b4 100644
--- a/components/domain_reliability/BUILD.gn
+++ b/components/domain_reliability/BUILD.gn
@@ -67,6 +67,7 @@ component("domain_reliability") {
deps = [
":bake_in_configs",
"//base",
+ "//components/data_use_measurement/core",
"//components/keyed_service/core",
"//content/public/browser",
"//net",
diff --git a/components/domain_reliability/DEPS b/components/domain_reliability/DEPS
index bf04311..11de3168 100644
--- a/components/domain_reliability/DEPS
+++ b/components/domain_reliability/DEPS
@@ -4,6 +4,7 @@
include_rules = [
"+net",
+ "+components/data_use_measurement/core",
"+components/keyed_service/core",
]
diff --git a/components/domain_reliability/uploader.cc b/components/domain_reliability/uploader.cc
index c5e2099..90952af 100644
--- a/components/domain_reliability/uploader.cc
+++ b/components/domain_reliability/uploader.cc
@@ -9,6 +9,7 @@
#include "base/metrics/sparse_histogram.h"
#include "base/stl_util.h"
#include "base/supports_user_data.h"
+#include "components/data_use_measurement/core/data_use_user_data.h"
#include "components/domain_reliability/util.h"
#include "net/base/load_flags.h"
#include "net/base/net_errors.h"
@@ -77,6 +78,8 @@ class DomainReliabilityUploaderImpl
net::URLFetcher* fetcher =
net::URLFetcher::Create(0, upload_url, net::URLFetcher::POST, this)
.release();
+ data_use_measurement::DataUseUserData::AttachToFetcher(
+ fetcher, data_use_measurement::DataUseUserData::DOMAIN_RELIABILITY);
fetcher->SetRequestContext(url_request_context_getter_.get());
fetcher->SetLoadFlags(net::LOAD_DO_NOT_SEND_COOKIES |
net::LOAD_DO_NOT_SAVE_COOKIES);
diff --git a/components/google.gypi b/components/google.gypi
index 18b06a9..1b5c2f6 100644
--- a/components/google.gypi
+++ b/components/google.gypi
@@ -13,6 +13,7 @@
'../net/net.gyp:net',
'../url/url.gyp:url_lib',
'components_strings.gyp:components_strings',
+ 'data_use_measurement_core',
'keyed_service_core',
'pref_registry',
'url_formatter/url_formatter.gyp:url_formatter',
diff --git a/components/google/core/browser/BUILD.gn b/components/google/core/browser/BUILD.gn
index fbff1240..6e4c581 100644
--- a/components/google/core/browser/BUILD.gn
+++ b/components/google/core/browser/BUILD.gn
@@ -21,6 +21,7 @@ static_library("browser") {
deps = [
"//base",
"//base:prefs",
+ "//components/data_use_measurement/core",
"//components/keyed_service/core",
"//components/pref_registry",
"//components/strings",
diff --git a/components/google/core/browser/DEPS b/components/google/core/browser/DEPS
index 7a27ff5..afcec3d 100644
--- a/components/google/core/browser/DEPS
+++ b/components/google/core/browser/DEPS
@@ -1,4 +1,5 @@
include_rules = [
+ "+components/data_use_measurement/core",
"+components/keyed_service/core",
"+components/pref_registry",
]
diff --git a/components/google/core/browser/google_url_tracker.cc b/components/google/core/browser/google_url_tracker.cc
index 2ead364..fa0d140 100644
--- a/components/google/core/browser/google_url_tracker.cc
+++ b/components/google/core/browser/google_url_tracker.cc
@@ -11,6 +11,7 @@
#include "base/single_thread_task_runner.h"
#include "base/strings/string_util.h"
#include "base/thread_task_runner_handle.h"
+#include "components/data_use_measurement/core/data_use_user_data.h"
#include "components/google/core/browser/google_pref_names.h"
#include "components/google/core/browser/google_switches.h"
#include "components/google/core/browser/google_util.h"
@@ -163,6 +164,9 @@ void GoogleURLTracker::StartFetchIfDesirable() {
already_fetched_ = true;
fetcher_ = net::URLFetcher::Create(fetcher_id_, GURL(kSearchDomainCheckURL),
net::URLFetcher::GET, this);
+ data_use_measurement::DataUseUserData::AttachToFetcher(
+ fetcher_.get(),
+ data_use_measurement::DataUseUserData::GOOGLE_URL_TRACKER);
++fetcher_id_;
// We don't want this fetch to set new entries in the cache or cookies, lest
// we alarm the user.
diff --git a/components/invalidation.gypi b/components/invalidation.gypi
index affc2b3..d9f0a69 100644
--- a/components/invalidation.gypi
+++ b/components/invalidation.gypi
@@ -54,6 +54,7 @@
'../google_apis/google_apis.gyp:google_apis',
'../jingle/jingle.gyp:notifier',
'../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation_proto_cpp',
+ 'data_use_measurement_core',
'gcm_driver',
'keyed_service_core',
'pref_registry',
diff --git a/components/invalidation/impl/BUILD.gn b/components/invalidation/impl/BUILD.gn
index 20034c1..bf1b917 100644
--- a/components/invalidation/impl/BUILD.gn
+++ b/components/invalidation/impl/BUILD.gn
@@ -68,6 +68,7 @@ source_set("impl") {
"//base",
"//base:i18n",
"//base:prefs",
+ "//components/data_use_measurement/core",
"//components/gcm_driver",
"//components/keyed_service/core",
"//components/pref_registry",
diff --git a/components/invalidation/impl/DEPS b/components/invalidation/impl/DEPS
index 285832f..5fb7f26 100644
--- a/components/invalidation/impl/DEPS
+++ b/components/invalidation/impl/DEPS
@@ -1,6 +1,7 @@
include_rules = [
"+components/invalidation/public",
+ "+components/data_use_measurement/core",
"+components/gcm_driver",
"+components/keyed_service",
"+components/pref_registry",
diff --git a/components/invalidation/impl/gcm_network_channel.cc b/components/invalidation/impl/gcm_network_channel.cc
index ebe9e59..7e664464 100644
--- a/components/invalidation/impl/gcm_network_channel.cc
+++ b/components/invalidation/impl/gcm_network_channel.cc
@@ -19,6 +19,7 @@
#include "google/cacheinvalidation/channel_common.pb.h"
#include "google/cacheinvalidation/types.pb.h"
#endif
+#include "components/data_use_measurement/core/data_use_user_data.h"
#include "components/invalidation/impl/gcm_network_channel.h"
#include "components/invalidation/impl/gcm_network_channel_delegate.h"
#include "google_apis/gaia/google_service_auth_error.h"
@@ -211,6 +212,8 @@ void GCMNetworkChannel::OnGetTokenComplete(
DVLOG(2) << "Got access token, sending message";
fetcher_ = net::URLFetcher::Create(BuildUrl(registration_id_),
net::URLFetcher::POST, this);
+ data_use_measurement::DataUseUserData::AttachToFetcher(
+ fetcher_.get(), data_use_measurement::DataUseUserData::INVALIDATION);
fetcher_->SetRequestContext(request_context_getter_.get());
const std::string auth_header("Authorization: Bearer " + access_token_);
fetcher_->AddExtraRequestHeader(auth_header);
diff --git a/components/metrics.gypi b/components/metrics.gypi
index 6954198..34163cd 100644
--- a/components/metrics.gypi
+++ b/components/metrics.gypi
@@ -99,6 +99,7 @@
'../net/net.gyp:net',
'../url/url.gyp:url_lib',
'component_metrics_proto',
+ 'data_use_measurement_core',
'metrics',
],
'sources': [
diff --git a/components/metrics/BUILD.gn b/components/metrics/BUILD.gn
index bfae327..5552136e 100644
--- a/components/metrics/BUILD.gn
+++ b/components/metrics/BUILD.gn
@@ -115,6 +115,7 @@ static_library("net") {
]
deps = [
"//base",
+ "//components/data_use_measurement/core",
"//net",
"//url",
]
diff --git a/components/metrics/net/DEPS b/components/metrics/net/DEPS
index 54226d4..c7c67e4 100644
--- a/components/metrics/net/DEPS
+++ b/components/metrics/net/DEPS
@@ -1,5 +1,6 @@
include_rules = [
"+chromeos/network",
+ "+components/data_use_measurement/core",
"+net",
"+third_party/cros_system_api",
]
diff --git a/components/metrics/net/net_metrics_log_uploader.cc b/components/metrics/net/net_metrics_log_uploader.cc
index 3ccdf5c..0ded667 100644
--- a/components/metrics/net/net_metrics_log_uploader.cc
+++ b/components/metrics/net/net_metrics_log_uploader.cc
@@ -5,6 +5,7 @@
#include "components/metrics/net/net_metrics_log_uploader.h"
#include "base/metrics/histogram_macros.h"
+#include "components/data_use_measurement/core/data_use_user_data.h"
#include "net/base/load_flags.h"
#include "net/base/network_change_notifier.h"
#include "net/url_request/url_fetcher.h"
@@ -41,6 +42,8 @@ void NetMetricsLogUploader::UploadLog(const std::string& compressed_log_data,
const std::string& log_hash) {
current_fetch_ =
net::URLFetcher::Create(GURL(server_url_), net::URLFetcher::POST, this);
+ data_use_measurement::DataUseUserData::AttachToFetcher(
+ current_fetch_.get(), data_use_measurement::DataUseUserData::UMA);
current_fetch_->SetRequestContext(request_context_getter_);
current_fetch_->SetUploadData(mime_type_, compressed_log_data);
diff --git a/components/omnibox.gypi b/components/omnibox.gypi
index f363668..1c5d027 100644
--- a/components/omnibox.gypi
+++ b/components/omnibox.gypi
@@ -24,6 +24,7 @@
'component_metrics_proto',
'components_resources.gyp:components_resources',
'components_strings.gyp:components_strings',
+ 'data_use_measurement_core',
'history_core_browser',
'keyed_service_core',
'omnibox_common',
diff --git a/components/omnibox/browser/BUILD.gn b/components/omnibox/browser/BUILD.gn
index 0dd73b8..59ea020 100644
--- a/components/omnibox/browser/BUILD.gn
+++ b/components/omnibox/browser/BUILD.gn
@@ -108,6 +108,7 @@ source_set("browser") {
"//base:prefs",
"//components/bookmarks/browser",
"//components/crash_keys", # TODO(mpearson): remove once 464926 is fixed.
+ "//components/data_use_measurement/core",
"//components/keyed_service/core",
"//components/metrics",
"//components/omnibox/common",
diff --git a/components/omnibox/browser/DEPS b/components/omnibox/browser/DEPS
index 31e1f1c..573394e2 100644
--- a/components/omnibox/browser/DEPS
+++ b/components/omnibox/browser/DEPS
@@ -1,6 +1,7 @@
include_rules = [
"+components/bookmarks/browser",
"+components/crash_keys", # TODO(mpearson): remove once 464926 is fixed.
+ "+components/data_use_measurement/core",
"+components/history/core/browser",
"+components/keyed_service/core",
"+components/metrics",
diff --git a/components/omnibox/browser/base_search_provider.cc b/components/omnibox/browser/base_search_provider.cc
index 028c322..f4ec1d1 100644
--- a/components/omnibox/browser/base_search_provider.cc
+++ b/components/omnibox/browser/base_search_provider.cc
@@ -7,6 +7,7 @@
#include "base/i18n/case_conversion.h"
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
+#include "components/data_use_measurement/core/data_use_user_data.h"
#include "components/metrics/proto/omnibox_event.pb.h"
#include "components/metrics/proto/omnibox_input_type.pb.h"
#include "components/omnibox/browser/autocomplete_provider_client.h"
@@ -59,6 +60,8 @@ SuggestionDeletionHandler::SuggestionDeletionHandler(
deletion_fetcher_ =
net::URLFetcher::Create(BaseSearchProvider::kDeletionURLFetcherID, url,
net::URLFetcher::GET, this);
+ data_use_measurement::DataUseUserData::AttachToFetcher(
+ deletion_fetcher_.get(), data_use_measurement::DataUseUserData::OMNIBOX);
deletion_fetcher_->SetRequestContext(request_context);
deletion_fetcher_->Start();
}
diff --git a/components/omnibox/browser/search_provider.cc b/components/omnibox/browser/search_provider.cc
index 7f4aab1..926c3df 100644
--- a/components/omnibox/browser/search_provider.cc
+++ b/components/omnibox/browser/search_provider.cc
@@ -18,6 +18,7 @@
#include "base/rand_util.h"
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
+#include "components/data_use_measurement/core/data_use_user_data.h"
#include "components/history/core/browser/in_memory_database.h"
#include "components/history/core/browser/keyword_search_term.h"
#include "components/metrics/proto/omnibox_input_type.pb.h"
@@ -863,6 +864,8 @@ scoped_ptr<net::URLFetcher> SearchProvider::CreateSuggestFetcher(
scoped_ptr<net::URLFetcher> fetcher =
net::URLFetcher::Create(id, suggest_url, net::URLFetcher::GET, this);
+ data_use_measurement::DataUseUserData::AttachToFetcher(
+ fetcher.get(), data_use_measurement::DataUseUserData::OMNIBOX);
fetcher->SetRequestContext(client()->GetRequestContext());
fetcher->SetLoadFlags(net::LOAD_DO_NOT_SAVE_COOKIES);
// Add Chrome experiment state to the request headers.
diff --git a/components/omnibox/browser/zero_suggest_provider.cc b/components/omnibox/browser/zero_suggest_provider.cc
index b93b0ab..9b9dcfc 100644
--- a/components/omnibox/browser/zero_suggest_provider.cc
+++ b/components/omnibox/browser/zero_suggest_provider.cc
@@ -14,6 +14,7 @@
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "base/time/time.h"
+#include "components/data_use_measurement/core/data_use_user_data.h"
#include "components/history/core/browser/history_types.h"
#include "components/history/core/browser/top_sites.h"
#include "components/metrics/proto/omnibox_input_type.pb.h"
@@ -319,6 +320,8 @@ void ZeroSuggestProvider::Run(const GURL& suggest_url) {
const int kFetcherID = 1;
fetcher_ = net::URLFetcher::Create(kFetcherID, suggest_url,
net::URLFetcher::GET, this);
+ data_use_measurement::DataUseUserData::AttachToFetcher(
+ fetcher_.get(), data_use_measurement::DataUseUserData::OMNIBOX);
fetcher_->SetRequestContext(client()->GetRequestContext());
fetcher_->SetLoadFlags(net::LOAD_DO_NOT_SAVE_COOKIES);
// Add Chrome experiment state to the request headers.
diff --git a/components/policy/core/common/BUILD.gn b/components/policy/core/common/BUILD.gn
index 8e64691..30838e9 100644
--- a/components/policy/core/common/BUILD.gn
+++ b/components/policy/core/common/BUILD.gn
@@ -134,6 +134,7 @@ source_set("common") {
deps = [
"//base:prefs",
"//base/third_party/dynamic_annotations",
+ "//components/data_use_measurement/core",
"//components/json_schema",
"//components/policy",
"//google_apis",
diff --git a/components/policy/core/common/DEPS b/components/policy/core/common/DEPS
index 1fc5291..7af9e16 100644
--- a/components/policy/core/common/DEPS
+++ b/components/policy/core/common/DEPS
@@ -1,3 +1,4 @@
include_rules = [
"-components/policy/core/browser",
+ "+components/data_use_measurement/core",
]
diff --git a/components/policy/core/common/cloud/device_management_service.cc b/components/policy/core/common/cloud/device_management_service.cc
index 5a22d9d..05a058b 100644
--- a/components/policy/core/common/cloud/device_management_service.cc
+++ b/components/policy/core/common/cloud/device_management_service.cc
@@ -11,6 +11,7 @@
#include "base/location.h"
#include "base/single_thread_task_runner.h"
#include "base/thread_task_runner_handle.h"
+#include "components/data_use_measurement/core/data_use_user_data.h"
#include "net/base/escape.h"
#include "net/base/load_flags.h"
#include "net/base/net_errors.h"
@@ -463,6 +464,8 @@ void DeviceManagementService::StartJob(DeviceManagementRequestJobImpl* job) {
net::URLFetcher* fetcher =
net::URLFetcher::Create(kURLFetcherID, job->GetURL(server_url),
net::URLFetcher::POST, this).release();
+ data_use_measurement::DataUseUserData::AttachToFetcher(
+ fetcher, data_use_measurement::DataUseUserData::POLICY);
job->ConfigureRequest(fetcher);
pending_jobs_[fetcher] = job;
fetcher->Start();
diff --git a/components/policy/core/common/cloud/external_policy_data_fetcher.cc b/components/policy/core/common/cloud/external_policy_data_fetcher.cc
index 7dd4988..c1621de 100644
--- a/components/policy/core/common/cloud/external_policy_data_fetcher.cc
+++ b/components/policy/core/common/cloud/external_policy_data_fetcher.cc
@@ -10,6 +10,7 @@
#include "base/logging.h"
#include "base/sequenced_task_runner.h"
#include "base/stl_util.h"
+#include "components/data_use_measurement/core/data_use_user_data.h"
#include "net/base/load_flags.h"
#include "net/base/net_errors.h"
#include "net/url_request/url_fetcher.h"
@@ -173,6 +174,8 @@ void ExternalPolicyDataFetcherBackend::StartJob(
net::URLFetcher* fetcher =
net::URLFetcher::Create(++last_fetch_id_, job->url, net::URLFetcher::GET,
this).release();
+ data_use_measurement::DataUseUserData::AttachToFetcher(
+ fetcher, data_use_measurement::DataUseUserData::POLICY);
fetcher->SetRequestContext(request_context_.get());
fetcher->SetLoadFlags(net::LOAD_BYPASS_CACHE | net::LOAD_DISABLE_CACHE |
net::LOAD_DO_NOT_SAVE_COOKIES |
diff --git a/components/policy/core/common/cloud/user_info_fetcher.cc b/components/policy/core/common/cloud/user_info_fetcher.cc
index 6c479d0..0212bb9 100644
--- a/components/policy/core/common/cloud/user_info_fetcher.cc
+++ b/components/policy/core/common/cloud/user_info_fetcher.cc
@@ -8,6 +8,7 @@
#include "base/logging.h"
#include "base/strings/stringprintf.h"
#include "base/values.h"
+#include "components/data_use_measurement/core/data_use_user_data.h"
#include "google_apis/gaia/gaia_urls.h"
#include "google_apis/gaia/google_service_auth_error.h"
#include "net/base/load_flags.h"
@@ -44,6 +45,8 @@ void UserInfoFetcher::Start(const std::string& access_token) {
url_fetcher_ =
net::URLFetcher::Create(0, GaiaUrls::GetInstance()->oauth_user_info_url(),
net::URLFetcher::GET, this);
+ data_use_measurement::DataUseUserData::AttachToFetcher(
+ url_fetcher_.get(), data_use_measurement::DataUseUserData::POLICY);
url_fetcher_->SetRequestContext(context_);
url_fetcher_->SetLoadFlags(net::LOAD_DO_NOT_SEND_COOKIES |
net::LOAD_DO_NOT_SAVE_COOKIES);
diff --git a/components/policy/policy_common.gypi b/components/policy/policy_common.gypi
index d2468ba..55573e6 100644
--- a/components/policy/policy_common.gypi
+++ b/components/policy/policy_common.gypi
@@ -23,6 +23,7 @@
'../third_party/re2/re2.gyp:re2',
'../url/url.gyp:url_lib',
'cloud_policy_proto',
+ 'data_use_measurement_core',
'json_schema',
'policy',
],
diff --git a/components/rappor.gypi b/components/rappor.gypi
index 88c77f0..8dd2dcf 100644
--- a/components/rappor.gypi
+++ b/components/rappor.gypi
@@ -16,6 +16,7 @@
'../crypto/crypto.gyp:crypto',
'../net/net.gyp:net',
'../third_party/smhasher/smhasher.gyp:cityhash',
+ 'data_use_measurement_core',
'metrics',
'variations',
],
diff --git a/components/rappor/BUILD.gn b/components/rappor/BUILD.gn
index 5c6e321..2a98041 100644
--- a/components/rappor/BUILD.gn
+++ b/components/rappor/BUILD.gn
@@ -34,6 +34,7 @@ source_set("rappor") {
deps = [
"//base",
+ "//components/data_use_measurement/core",
"//components/metrics",
"//components/rappor/proto",
"//components/variations",
diff --git a/components/rappor/DEPS b/components/rappor/DEPS
index 14115d9..68455c7 100644
--- a/components/rappor/DEPS
+++ b/components/rappor/DEPS
@@ -1,4 +1,5 @@
include_rules = [
+ "+components/data_use_measurement/core",
"+components/metrics",
"+components/variations",
"+crypto",
diff --git a/components/rappor/log_uploader.cc b/components/rappor/log_uploader.cc
index 9211184..97ad3e4 100644
--- a/components/rappor/log_uploader.cc
+++ b/components/rappor/log_uploader.cc
@@ -6,6 +6,7 @@
#include "base/metrics/histogram_macros.h"
#include "base/metrics/sparse_histogram.h"
+#include "components/data_use_measurement/core/data_use_user_data.h"
#include "net/base/load_flags.h"
#include "net/base/net_errors.h"
#include "net/url_request/url_fetcher.h"
@@ -110,6 +111,8 @@ void LogUploader::StartScheduledUpload() {
has_callback_pending_ = true;
current_fetch_ =
net::URLFetcher::Create(server_url_, net::URLFetcher::POST, this);
+ data_use_measurement::DataUseUserData::AttachToFetcher(
+ current_fetch_.get(), data_use_measurement::DataUseUserData::RAPPOR);
current_fetch_->SetRequestContext(request_context_.get());
current_fetch_->SetUploadData(mime_type_, queued_logs_.front());
diff --git a/components/translate.gypi b/components/translate.gypi
index 50fda09..f550365 100644
--- a/components/translate.gypi
+++ b/components/translate.gypi
@@ -17,6 +17,7 @@
'../url/url.gyp:url_lib',
'components_resources.gyp:components_resources',
'components_strings.gyp:components_strings',
+ 'data_use_measurement_core',
'infobars_core',
'language_usage_metrics',
'pref_registry',
diff --git a/components/translate/DEPS b/components/translate/DEPS
index 2497825..6e35d77 100644
--- a/components/translate/DEPS
+++ b/components/translate/DEPS
@@ -1,4 +1,5 @@
include_rules = [
+ "+components/data_use_measurement/core",
"+components/infobars",
"+components/language_usage_metrics",
"+components/pref_registry",
diff --git a/components/translate/core/browser/BUILD.gn b/components/translate/core/browser/BUILD.gn
index 862d2d0..0d6ec0e 100644
--- a/components/translate/core/browser/BUILD.gn
+++ b/components/translate/core/browser/BUILD.gn
@@ -41,6 +41,7 @@ source_set("browser") {
deps = [
"//base",
+ "//components/data_use_measurement/core",
"//components/language_usage_metrics",
"//components/resources:components_resources",
"//components/strings",
diff --git a/components/translate/core/browser/translate_url_fetcher.cc b/components/translate/core/browser/translate_url_fetcher.cc
index 6a59517..39c2b2c 100644
--- a/components/translate/core/browser/translate_url_fetcher.cc
+++ b/components/translate/core/browser/translate_url_fetcher.cc
@@ -4,6 +4,7 @@
#include "components/translate/core/browser/translate_url_fetcher.h"
+#include "components/data_use_measurement/core/data_use_user_data.h"
#include "components/translate/core/browser/translate_download_manager.h"
#include "net/base/load_flags.h"
#include "net/http/http_status_code.h"
@@ -46,6 +47,8 @@ bool TranslateURLFetcher::Request(
callback_ = callback;
fetcher_ = net::URLFetcher::Create(id_, url_, net::URLFetcher::GET, this);
+ data_use_measurement::DataUseUserData::AttachToFetcher(
+ fetcher_.get(), data_use_measurement::DataUseUserData::TRANSLATE);
fetcher_->SetLoadFlags(net::LOAD_DO_NOT_SEND_COOKIES |
net::LOAD_DO_NOT_SAVE_COOKIES);
fetcher_->SetRequestContext(
diff --git a/components/variations.gypi b/components/variations.gypi
index 349d451..562bcbb 100644
--- a/components/variations.gypi
+++ b/components/variations.gypi
@@ -99,6 +99,7 @@
'../base/base.gyp:base_prefs',
'../net/net.gyp:net',
'../ui/base/ui_base.gyp:ui_base',
+ 'data_use_measurement_core',
'metrics',
'network_time',
'pref_registry',
diff --git a/components/variations/service/BUILD.gn b/components/variations/service/BUILD.gn
index e260df0..9880c95 100644
--- a/components/variations/service/BUILD.gn
+++ b/components/variations/service/BUILD.gn
@@ -12,6 +12,7 @@ source_set("service") {
deps = [
"//base",
"//base:prefs",
+ "//components/data_use_measurement/core",
"//components/metrics",
"//components/network_time",
"//components/pref_registry",
diff --git a/components/variations/service/DEPS b/components/variations/service/DEPS
index 7b40227..54dcc1e 100644
--- a/components/variations/service/DEPS
+++ b/components/variations/service/DEPS
@@ -1,4 +1,5 @@
include_rules = [
+ "+components/data_use_measurement/core",
"+components/metrics",
"+components/network_time",
"+components/pref_registry",
diff --git a/components/variations/service/variations_service.cc b/components/variations/service/variations_service.cc
index 97d0769..bdc3e2a 100644
--- a/components/variations/service/variations_service.cc
+++ b/components/variations/service/variations_service.cc
@@ -15,6 +15,7 @@
#include "base/timer/elapsed_timer.h"
#include "base/values.h"
#include "base/version.h"
+#include "components/data_use_measurement/core/data_use_user_data.h"
#include "components/metrics/metrics_state_manager.h"
#include "components/network_time/network_time_tracker.h"
#include "components/pref_registry/pref_registry_syncable.h"
@@ -451,6 +452,9 @@ void VariationsService::DoActualFetch() {
pending_seed_request_ = net::URLFetcher::Create(0, variations_server_url_,
net::URLFetcher::GET, this);
+ data_use_measurement::DataUseUserData::AttachToFetcher(
+ pending_seed_request_.get(),
+ data_use_measurement::DataUseUserData::VARIATIONS);
pending_seed_request_->SetLoadFlags(net::LOAD_DO_NOT_SEND_COOKIES |
net::LOAD_DO_NOT_SAVE_COOKIES);
pending_seed_request_->SetRequestContext(client_->GetURLRequestContext());
diff --git a/sync/internal_api/http_bridge.cc b/sync/internal_api/http_bridge.cc
index 04e339c..6da0dd3 100644
--- a/sync/internal_api/http_bridge.cc
+++ b/sync/internal_api/http_bridge.cc
@@ -161,8 +161,11 @@ HttpBridgeFactory::~HttpBridgeFactory() {
cancelation_signal_->UnregisterHandler(this);
}
-void HttpBridgeFactory::Init(const std::string& user_agent) {
+void HttpBridgeFactory::Init(
+ const std::string& user_agent,
+ const BindToTrackerCallback& bind_to_tracker_callback) {
user_agent_ = user_agent;
+ bind_to_tracker_callback_ = bind_to_tracker_callback;
}
HttpPostProviderInterface* HttpBridgeFactory::Create() {
@@ -174,8 +177,9 @@ HttpPostProviderInterface* HttpBridgeFactory::Create() {
// we've been asked to shut down.
CHECK(request_context_getter_.get());
- scoped_refptr<HttpBridge> http = new HttpBridge(
- user_agent_, request_context_getter_, network_time_update_callback_);
+ scoped_refptr<HttpBridge> http =
+ new HttpBridge(user_agent_, request_context_getter_,
+ network_time_update_callback_, bind_to_tracker_callback_);
http->AddRef();
return http.get();
}
@@ -204,14 +208,15 @@ HttpBridge::URLFetchState::~URLFetchState() {}
HttpBridge::HttpBridge(
const std::string& user_agent,
const scoped_refptr<net::URLRequestContextGetter>& context_getter,
- const NetworkTimeUpdateCallback& network_time_update_callback)
+ const NetworkTimeUpdateCallback& network_time_update_callback,
+ const BindToTrackerCallback& bind_to_tracker_callback)
: created_on_loop_(base::MessageLoop::current()),
user_agent_(user_agent),
http_post_completed_(false, false),
request_context_getter_(context_getter),
network_task_runner_(request_context_getter_->GetNetworkTaskRunner()),
- network_time_update_callback_(network_time_update_callback) {
-}
+ network_time_update_callback_(network_time_update_callback),
+ bind_to_tracker_callback_(bind_to_tracker_callback) {}
HttpBridge::~HttpBridge() {
}
@@ -313,6 +318,8 @@ void HttpBridge::MakeAsynchronousPost() {
fetch_state_.url_poster =
net::URLFetcher::Create(url_for_request_, net::URLFetcher::POST, this)
.release();
+ if (!bind_to_tracker_callback_.is_null())
+ bind_to_tracker_callback_.Run(fetch_state_.url_poster);
fetch_state_.url_poster->SetRequestContext(request_context_getter_.get());
fetch_state_.url_poster->SetExtraRequestHeaders(extra_headers_);
diff --git a/sync/internal_api/http_bridge_unittest.cc b/sync/internal_api/http_bridge_unittest.cc
index 4ea4e70..7c6fe822 100644
--- a/sync/internal_api/http_bridge_unittest.cc
+++ b/sync/internal_api/http_bridge_unittest.cc
@@ -14,6 +14,7 @@
#include "net/url_request/url_request_test_util.h"
#include "sync/internal_api/public/base/cancelation_signal.h"
#include "sync/internal_api/public/http_bridge.h"
+#include "sync/internal_api/public/http_post_provider_factory.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/zlib/zlib.h"
@@ -144,9 +145,8 @@ class MAYBE_SyncHttpBridgeTest : public testing::Test {
fake_default_request_context_getter_->AddRef();
}
HttpBridge* bridge =
- new HttpBridge(kUserAgent,
- fake_default_request_context_getter_,
- NetworkTimeUpdateCallback());
+ new HttpBridge(kUserAgent, fake_default_request_context_getter_,
+ NetworkTimeUpdateCallback(), BindToTrackerCallback());
return bridge;
}
@@ -207,11 +207,15 @@ class ShuntedHttpBridge : public HttpBridge {
// If |never_finishes| is true, the simulated request never actually
// returns.
ShuntedHttpBridge(net::URLRequestContextGetter* baseline_context_getter,
- MAYBE_SyncHttpBridgeTest* test, bool never_finishes)
+ MAYBE_SyncHttpBridgeTest* test,
+ bool never_finishes)
: HttpBridge(kUserAgent,
baseline_context_getter,
- NetworkTimeUpdateCallback()),
- test_(test), never_finishes_(never_finishes) { }
+ NetworkTimeUpdateCallback(),
+ BindToTrackerCallback()),
+ test_(test),
+ never_finishes_(never_finishes) {}
+
protected:
void MakeAsynchronousPost() override {
ASSERT_TRUE(base::MessageLoop::current() == test_->GetIOThreadLoop());
@@ -579,7 +583,7 @@ void HttpBridgeRunOnSyncThread(
new syncer::HttpBridgeFactory(baseline_context_getter,
NetworkTimeUpdateCallback(),
factory_cancelation_signal));
- bridge_factory->Init("test");
+ bridge_factory->Init("test", BindToTrackerCallback());
*bridge_factory_out = bridge_factory.get();
HttpPostProviderInterface* bridge = bridge_factory->Create();
@@ -673,7 +677,7 @@ TEST_F(MAYBE_SyncHttpBridgeTest, EarlyAbortFactory) {
// Sync thread: Finally run the posted task, only to find that our
// HttpBridgeFactory has been neutered. Should not crash.
- factory->Init("TestUserAgent");
+ factory->Init("TestUserAgent", BindToTrackerCallback());
// At this point, attempting to use the factory would trigger a crash. Both
// this test and the real world code should make sure this never happens.
diff --git a/sync/internal_api/public/http_bridge.h b/sync/internal_api/public/http_bridge.h
index 36704e2..73e68a52 100644
--- a/sync/internal_api/public/http_bridge.h
+++ b/sync/internal_api/public/http_bridge.h
@@ -54,7 +54,8 @@ class SYNC_EXPORT_PRIVATE HttpBridge
public:
HttpBridge(const std::string& user_agent,
const scoped_refptr<net::URLRequestContextGetter>& context,
- const NetworkTimeUpdateCallback& network_time_update_callback);
+ const NetworkTimeUpdateCallback& network_time_update_callback,
+ const BindToTrackerCallback& bind_to_tracker_callback);
// HttpPostProvider implementation.
void SetExtraRequestHeaders(const char* headers) override;
@@ -180,6 +181,10 @@ class SYNC_EXPORT_PRIVATE HttpBridge
// Callback for updating network time.
NetworkTimeUpdateCallback network_time_update_callback_;
+ // A callback to tag Sync request to be able to record data use of this
+ // service by data_use_measurement component.
+ BindToTrackerCallback bind_to_tracker_callback_;
+
DISALLOW_COPY_AND_ASSIGN(HttpBridge);
};
@@ -194,7 +199,8 @@ class SYNC_EXPORT HttpBridgeFactory : public HttpPostProviderFactory,
~HttpBridgeFactory() override;
// HttpPostProviderFactory:
- void Init(const std::string& user_agent) override;
+ void Init(const std::string& user_agent,
+ const BindToTrackerCallback& bind_to_tracker_callback) override;
HttpPostProviderInterface* Create() override;
void Destroy(HttpPostProviderInterface* http) override;
@@ -216,6 +222,10 @@ class SYNC_EXPORT HttpBridgeFactory : public HttpPostProviderFactory,
CancelationSignal* const cancelation_signal_;
+ // A callback to tag Sync request to be able to record data use of this
+ // service by data_use_measurement component.
+ BindToTrackerCallback bind_to_tracker_callback_;
+
DISALLOW_COPY_AND_ASSIGN(HttpBridgeFactory);
};
diff --git a/sync/internal_api/public/http_post_provider_factory.h b/sync/internal_api/public/http_post_provider_factory.h
index 9346651..ef6af9b 100644
--- a/sync/internal_api/public/http_post_provider_factory.h
+++ b/sync/internal_api/public/http_post_provider_factory.h
@@ -7,10 +7,17 @@
#include <string>
+#include "base/callback.h"
#include "sync/base/sync_export.h"
+namespace net {
+class URLFetcher;
+}
+
namespace syncer {
+typedef base::Callback<void(net::URLFetcher*)> BindToTrackerCallback;
+
class HttpPostProviderInterface;
// A factory to create HttpPostProviders to hide details about the
@@ -21,7 +28,8 @@ class SYNC_EXPORT HttpPostProviderFactory {
public:
virtual ~HttpPostProviderFactory() {}
- virtual void Init(const std::string& user_agent) = 0;
+ virtual void Init(const std::string& user_agent,
+ const BindToTrackerCallback& bind_to_tracker_callback) = 0;
// Obtain a new HttpPostProviderInterface instance, owned by caller.
virtual HttpPostProviderInterface* Create() = 0;
diff --git a/sync/internal_api/sync_manager_impl_unittest.cc b/sync/internal_api/sync_manager_impl_unittest.cc
index 04b97b5..27791ff 100644
--- a/sync/internal_api/sync_manager_impl_unittest.cc
+++ b/sync/internal_api/sync_manager_impl_unittest.cc
@@ -801,7 +801,8 @@ class TestHttpPostProviderInterface : public HttpPostProviderInterface {
class TestHttpPostProviderFactory : public HttpPostProviderFactory {
public:
~TestHttpPostProviderFactory() override {}
- void Init(const std::string& user_agent) override {}
+ void Init(const std::string& user_agent,
+ const BindToTrackerCallback& bind_to_tracker_callback) override {}
HttpPostProviderInterface* Create() override {
return new TestHttpPostProviderInterface();
}
diff --git a/sync/internal_api/syncapi_server_connection_manager_unittest.cc b/sync/internal_api/syncapi_server_connection_manager_unittest.cc
index 10dc311..e438ac1 100644
--- a/sync/internal_api/syncapi_server_connection_manager_unittest.cc
+++ b/sync/internal_api/syncapi_server_connection_manager_unittest.cc
@@ -51,7 +51,9 @@ class BlockingHttpPost : public HttpPostProviderInterface {
class BlockingHttpPostFactory : public HttpPostProviderFactory {
public:
~BlockingHttpPostFactory() override {}
- void Init(const std::string& user_agent) override {}
+ void Init(const std::string& user_agent,
+ const BindToTrackerCallback& bind_to_tracker_callback) override {}
+
HttpPostProviderInterface* Create() override {
return new BlockingHttpPost();
}
diff --git a/sync/test/fake_server/fake_server_http_post_provider.cc b/sync/test/fake_server/fake_server_http_post_provider.cc
index 75c5d46e..7a844b9 100644
--- a/sync/test/fake_server/fake_server_http_post_provider.cc
+++ b/sync/test/fake_server/fake_server_http_post_provider.cc
@@ -26,7 +26,9 @@ FakeServerHttpPostProviderFactory::FakeServerHttpPostProviderFactory(
FakeServerHttpPostProviderFactory::~FakeServerHttpPostProviderFactory() { }
-void FakeServerHttpPostProviderFactory::Init(const std::string& user_agent) { }
+void FakeServerHttpPostProviderFactory::Init(
+ const std::string& user_agent,
+ const syncer::BindToTrackerCallback& bind_to_tracker_callback) {}
HttpPostProviderInterface* FakeServerHttpPostProviderFactory::Create() {
FakeServerHttpPostProvider* http =
diff --git a/sync/test/fake_server/fake_server_http_post_provider.h b/sync/test/fake_server/fake_server_http_post_provider.h
index 593be1d..3ee4d42 100644
--- a/sync/test/fake_server/fake_server_http_post_provider.h
+++ b/sync/test/fake_server/fake_server_http_post_provider.h
@@ -7,6 +7,7 @@
#include <string>
+#include "base/callback.h"
#include "base/memory/ref_counted.h"
#include "base/memory/weak_ptr.h"
#include "base/sequenced_task_runner.h"
@@ -70,7 +71,9 @@ class FakeServerHttpPostProviderFactory
~FakeServerHttpPostProviderFactory() override;
// HttpPostProviderFactory:
- void Init(const std::string& user_agent) override;
+ void Init(
+ const std::string& user_agent,
+ const syncer::BindToTrackerCallback& bind_to_tracker_callback) override;
syncer::HttpPostProviderInterface* Create() override;
void Destroy(syncer::HttpPostProviderInterface* http) override;
diff --git a/sync/tools/sync_client.cc b/sync/tools/sync_client.cc
index 2ec1f19..5999e11 100644
--- a/sync/tools/sync_client.cc
+++ b/sync/tools/sync_client.cc
@@ -34,6 +34,7 @@
#include "sync/internal_api/public/base_node.h"
#include "sync/internal_api/public/engine/passive_model_worker.h"
#include "sync/internal_api/public/http_bridge.h"
+#include "sync/internal_api/public/http_post_provider_factory.h"
#include "sync/internal_api/public/internal_components_factory_impl.h"
#include "sync/internal_api/public/read_node.h"
#include "sync/internal_api/public/sync_manager.h"
@@ -405,7 +406,7 @@ int SyncClientMain(int argc, char* argv[]) {
new HttpBridgeFactory(context_getter.get(),
base::Bind(&StubNetworkTimeUpdateCallback),
&factory_cancelation_signal));
- post_factory->Init(kUserAgent);
+ post_factory->Init(kUserAgent, BindToTrackerCallback());
// Used only when committing bookmarks, so it's okay to leave this
// as NULL.
ExtensionsActivity* extensions_activity = NULL;
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
index 9a64920..8a7ca4d 100644
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -55687,7 +55687,20 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
<enum name="DataUseServices" type="int">
<int value="0" label="Not Tagged"/>
- <int value="1" label="Suggestions Service"/>
+ <int value="1" label="Suggestions"/>
+ <int value="2" label="Translate"/>
+ <int value="3" label="Sync"/>
+ <int value="4" label="Omnibox"/>
+ <int value="5" label="Invalidation"/>
+ <int value="6" label="Rappor"/>
+ <int value="7" label="Variations"/>
+ <int value="8" label="UMA"/>
+ <int value="9" label="Domain Reliability"/>
+ <int value="10" label="Profile Downloader"/>
+ <int value="11" label="Google URL Tracker"/>
+ <int value="12" label="Autofill"/>
+ <int value="13" label="Policy"/>
+ <int value="14" label="Spell Checker"/>
</enum>
<enum name="DecodedImageType" type="int">
@@ -75348,6 +75361,19 @@ To add a new entry, add it with any value and run test to compute valid value.
<histogram_suffixes name="DataUse.Service.Types" separator=".">
<suffix name="NotTagged"/>
<suffix name="Suggestions"/>
+ <suffix name="Translate"/>
+ <suffix name="Sync"/>
+ <suffix name="Omnibox"/>
+ <suffix name="Invalidation"/>
+ <suffix name="Rappor"/>
+ <suffix name="Variations"/>
+ <suffix name="UMA"/>
+ <suffix name="DomainReliability"/>
+ <suffix name="ProfileDownloader"/>
+ <suffix name="GoogleURLTracker"/>
+ <suffix name="Autofill"/>
+ <suffix name="Policy"/>
+ <suffix name="SpellChecker"/>
<affected-histogram name="DataUse.MessageSize"/>
</histogram_suffixes>