summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormaxbogue <maxbogue@chromium.org>2015-08-11 10:52:12 -0700
committerCommit bot <commit-bot@chromium.org>2015-08-11 17:52:54 +0000
commitb18b920ba602a4103bbe0bdfb2803a44dc5f42d0 (patch)
treea9dfe8ef87ef13ea1fedad496ff3bf41062d4732
parent4eebb13efbe6b3304bc501da6331e64e05d716f9 (diff)
downloadchromium_src-b18b920ba602a4103bbe0bdfb2803a44dc5f42d0.zip
chromium_src-b18b920ba602a4103bbe0bdfb2803a44dc5f42d0.tar.gz
chromium_src-b18b920ba602a4103bbe0bdfb2803a44dc5f42d0.tar.bz2
[Sync] Remove calls to MakeUserAgentForSyncApi.
BUG=512036 Review URL: https://codereview.chromium.org/1258563009 Cr-Commit-Position: refs/heads/master@{#342842}
-rw-r--r--chrome/browser/sync/glue/local_device_info_provider_impl.cc20
-rw-r--r--chrome/browser/sync/glue/local_device_info_provider_impl.h7
-rw-r--r--chrome/browser/sync/glue/local_device_info_provider_unittest.cc5
-rw-r--r--chrome/browser/sync/glue/sync_backend_host.h1
-rw-r--r--chrome/browser/sync/glue/sync_backend_host_core.cc5
-rw-r--r--chrome/browser/sync/glue/sync_backend_host_core.h2
-rw-r--r--chrome/browser/sync/glue/sync_backend_host_impl.cc3
-rw-r--r--chrome/browser/sync/glue/sync_backend_host_impl.h1
-rw-r--r--chrome/browser/sync/glue/sync_backend_host_impl_unittest.cc1
-rw-r--r--chrome/browser/sync/glue/sync_backend_host_mock.cc1
-rw-r--r--chrome/browser/sync/glue/sync_backend_host_mock.h1
-rw-r--r--chrome/browser/sync/profile_sync_service.cc15
-rw-r--r--chrome/browser/sync/profile_sync_service_unittest.cc6
-rw-r--r--chrome/browser/sync/sync_stopped_reporter.cc7
-rw-r--r--chrome/browser/sync/sync_stopped_reporter.h1
-rw-r--r--chrome/browser/sync/sync_stopped_reporter_unittest.cc35
-rw-r--r--components/sync_driver/local_device_info_provider.h5
-rw-r--r--components/sync_driver/local_device_info_provider_mock.cc4
-rw-r--r--components/sync_driver/local_device_info_provider_mock.h1
19 files changed, 73 insertions, 48 deletions
diff --git a/chrome/browser/sync/glue/local_device_info_provider_impl.cc b/chrome/browser/sync/glue/local_device_info_provider_impl.cc
index 9a59c4c..329cbaa 100644
--- a/chrome/browser/sync/glue/local_device_info_provider_impl.cc
+++ b/chrome/browser/sync/glue/local_device_info_provider_impl.cc
@@ -46,25 +46,25 @@ LocalDeviceInfoProviderImpl::LocalDeviceInfoProviderImpl()
LocalDeviceInfoProviderImpl::~LocalDeviceInfoProviderImpl() {
}
-// static.
-std::string LocalDeviceInfoProviderImpl::MakeUserAgentForSyncApi() {
+const sync_driver::DeviceInfo*
+LocalDeviceInfoProviderImpl::GetLocalDeviceInfo() const {
+ return local_device_info_.get();
+}
+
+std::string LocalDeviceInfoProviderImpl::GetSyncUserAgent() const {
#if !defined(OS_CHROMEOS) && !defined(OS_ANDROID)
return MakeDesktopUserAgentForSync();
#elif defined(OS_CHROMEOS)
return MakeUserAgentForSync("CROS ");
#elif defined(OS_ANDROID)
- if (IsTabletUI())
+ if (IsTabletUI()) {
return MakeUserAgentForSync("ANDROID-TABLET ");
- else
+ } else {
return MakeUserAgentForSync("ANDROID-PHONE ");
+ }
#endif
}
-const sync_driver::DeviceInfo*
-LocalDeviceInfoProviderImpl::GetLocalDeviceInfo() const {
- return local_device_info_.get();
-}
-
std::string LocalDeviceInfoProviderImpl::GetLocalSyncCacheGUID() const {
return cache_guid_;
}
@@ -97,7 +97,7 @@ void LocalDeviceInfoProviderImpl::InitializeContinuation(
new sync_driver::DeviceInfo(guid,
session_name,
chrome::GetVersionString(),
- MakeUserAgentForSyncApi(),
+ GetSyncUserAgent(),
GetLocalDeviceType(),
signin_scoped_device_id));
diff --git a/chrome/browser/sync/glue/local_device_info_provider_impl.h b/chrome/browser/sync/glue/local_device_info_provider_impl.h
index 7764c95..7323cf2 100644
--- a/chrome/browser/sync/glue/local_device_info_provider_impl.h
+++ b/chrome/browser/sync/glue/local_device_info_provider_impl.h
@@ -19,18 +19,15 @@ class LocalDeviceInfoProviderImpl
// LocalDeviceInfoProvider implementation.
const sync_driver::DeviceInfo* GetLocalDeviceInfo() const override;
+ std::string GetSyncUserAgent() const override;
std::string GetLocalSyncCacheGUID() const override;
void Initialize(const std::string& cache_guid,
const std::string& signin_scoped_device_id) override;
scoped_ptr<Subscription> RegisterOnInitializedCallback(
const base::Closure& callback) override;
- // Helper to construct a user agent string (ASCII) suitable for use by
- // the syncapi for any HTTP communication. This string is used by the sync
- // backend for classifying client types when calculating statistics.
- static std::string MakeUserAgentForSyncApi();
-
private:
+
void InitializeContinuation(const std::string& guid,
const std::string& signin_scoped_device_id,
const std::string& session_name);
diff --git a/chrome/browser/sync/glue/local_device_info_provider_unittest.cc b/chrome/browser/sync/glue/local_device_info_provider_unittest.cc
index 66afcf4..9176c30 100644
--- a/chrome/browser/sync/glue/local_device_info_provider_unittest.cc
+++ b/chrome/browser/sync/glue/local_device_info_provider_unittest.cc
@@ -78,9 +78,8 @@ TEST_F(LocalDeviceInfoProviderTest, GetLocalDeviceInfo) {
EXPECT_EQ(syncer::GetSessionNameSynchronouslyForTesting(),
local_device_info->client_name());
- EXPECT_EQ(
- browser_sync::LocalDeviceInfoProviderImpl::MakeUserAgentForSyncApi(),
- local_device_info->sync_user_agent());
+ EXPECT_EQ(provider_->GetSyncUserAgent(),
+ local_device_info->sync_user_agent());
}
TEST_F(LocalDeviceInfoProviderTest, GetLocalSyncCacheGUID) {
diff --git a/chrome/browser/sync/glue/sync_backend_host.h b/chrome/browser/sync/glue/sync_backend_host.h
index 4ec057a..9ef864c 100644
--- a/chrome/browser/sync/glue/sync_backend_host.h
+++ b/chrome/browser/sync/glue/sync_backend_host.h
@@ -64,6 +64,7 @@ class SyncBackendHost : public sync_driver::BackendDataTypeConfigurer {
scoped_ptr<base::Thread> sync_thread,
const syncer::WeakHandle<syncer::JsEventHandler>& event_handler,
const GURL& service_url,
+ const std::string& sync_user_agent,
const syncer::SyncCredentials& credentials,
bool delete_sync_data_folder,
scoped_ptr<syncer::SyncManagerFactory> sync_manager_factory,
diff --git a/chrome/browser/sync/glue/sync_backend_host_core.cc b/chrome/browser/sync/glue/sync_backend_host_core.cc
index d08e1a5..621c54c 100644
--- a/chrome/browser/sync/glue/sync_backend_host_core.cc
+++ b/chrome/browser/sync/glue/sync_backend_host_core.cc
@@ -61,6 +61,7 @@ DoInitializeOptions::DoInitializeOptions(
const scoped_refptr<syncer::ExtensionsActivity>& extensions_activity,
const syncer::WeakHandle<syncer::JsEventHandler>& event_handler,
const GURL& service_url,
+ const std::string& sync_user_agent,
scoped_ptr<syncer::HttpPostProviderFactory> http_bridge_factory,
const syncer::SyncCredentials& credentials,
const std::string& invalidator_client_id,
@@ -82,6 +83,7 @@ DoInitializeOptions::DoInitializeOptions(
extensions_activity(extensions_activity),
event_handler(event_handler),
service_url(service_url),
+ sync_user_agent(sync_user_agent),
http_bridge_factory(http_bridge_factory.Pass()),
credentials(credentials),
invalidator_client_id(invalidator_client_id),
@@ -423,8 +425,7 @@ 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(
- LocalDeviceInfoProviderImpl::MakeUserAgentForSyncApi());
+ options->http_bridge_factory->Init(options->sync_user_agent);
// Blow away the partial or corrupt sync data folder before doing any more
// initialization, if necessary.
diff --git a/chrome/browser/sync/glue/sync_backend_host_core.h b/chrome/browser/sync/glue/sync_backend_host_core.h
index bcd0ea9..489f1af 100644
--- a/chrome/browser/sync/glue/sync_backend_host_core.h
+++ b/chrome/browser/sync/glue/sync_backend_host_core.h
@@ -31,6 +31,7 @@ struct DoInitializeOptions {
const scoped_refptr<syncer::ExtensionsActivity>& extensions_activity,
const syncer::WeakHandle<syncer::JsEventHandler>& event_handler,
const GURL& service_url,
+ const std::string& sync_user_agent,
scoped_ptr<syncer::HttpPostProviderFactory> http_bridge_factory,
const syncer::SyncCredentials& credentials,
const std::string& invalidator_client_id,
@@ -54,6 +55,7 @@ struct DoInitializeOptions {
scoped_refptr<syncer::ExtensionsActivity> extensions_activity;
syncer::WeakHandle<syncer::JsEventHandler> event_handler;
GURL service_url;
+ std::string sync_user_agent;
// Overridden by tests.
scoped_ptr<syncer::HttpPostProviderFactory> http_bridge_factory;
syncer::SyncCredentials credentials;
diff --git a/chrome/browser/sync/glue/sync_backend_host_impl.cc b/chrome/browser/sync/glue/sync_backend_host_impl.cc
index 598c0e1..d04ac0b 100644
--- a/chrome/browser/sync/glue/sync_backend_host_impl.cc
+++ b/chrome/browser/sync/glue/sync_backend_host_impl.cc
@@ -102,6 +102,7 @@ void SyncBackendHostImpl::Initialize(
scoped_ptr<base::Thread> sync_thread,
const syncer::WeakHandle<syncer::JsEventHandler>& event_handler,
const GURL& sync_service_url,
+ const std::string& sync_user_agent,
const syncer::SyncCredentials& credentials,
bool delete_sync_data_folder,
scoped_ptr<syncer::SyncManagerFactory> sync_manager_factory,
@@ -148,7 +149,7 @@ void SyncBackendHostImpl::Initialize(
scoped_ptr<DoInitializeOptions> init_opts(new DoInitializeOptions(
registrar_->sync_thread()->message_loop(), registrar_.get(), routing_info,
workers, extensions_activity_monitor_.GetExtensionsActivity(),
- event_handler, sync_service_url,
+ event_handler, sync_service_url, sync_user_agent,
network_resources->GetHttpPostProviderFactory(
make_scoped_refptr(profile_->GetRequestContext()),
base::Bind(&UpdateNetworkTime),
diff --git a/chrome/browser/sync/glue/sync_backend_host_impl.h b/chrome/browser/sync/glue/sync_backend_host_impl.h
index 3f15018..21b7acb 100644
--- a/chrome/browser/sync/glue/sync_backend_host_impl.h
+++ b/chrome/browser/sync/glue/sync_backend_host_impl.h
@@ -83,6 +83,7 @@ class SyncBackendHostImpl
scoped_ptr<base::Thread> sync_thread,
const syncer::WeakHandle<syncer::JsEventHandler>& event_handler,
const GURL& service_url,
+ const std::string& sync_user_agent,
const syncer::SyncCredentials& credentials,
bool delete_sync_data_folder,
scoped_ptr<syncer::SyncManagerFactory> sync_manager_factory,
diff --git a/chrome/browser/sync/glue/sync_backend_host_impl_unittest.cc b/chrome/browser/sync/glue/sync_backend_host_impl_unittest.cc
index 9539b9c..3723793 100644
--- a/chrome/browser/sync/glue/sync_backend_host_impl_unittest.cc
+++ b/chrome/browser/sync/glue/sync_backend_host_impl_unittest.cc
@@ -215,6 +215,7 @@ class SyncBackendHostTest : public testing::Test {
scoped_ptr<base::Thread>(),
syncer::WeakHandle<syncer::JsEventHandler>(),
GURL(std::string()),
+ std::string(),
credentials_,
true,
fake_manager_factory_.Pass(),
diff --git a/chrome/browser/sync/glue/sync_backend_host_mock.cc b/chrome/browser/sync/glue/sync_backend_host_mock.cc
index d63f7c4..a6deee1 100644
--- a/chrome/browser/sync/glue/sync_backend_host_mock.cc
+++ b/chrome/browser/sync/glue/sync_backend_host_mock.cc
@@ -18,6 +18,7 @@ void SyncBackendHostMock::Initialize(
scoped_ptr<base::Thread> sync_thread,
const syncer::WeakHandle<syncer::JsEventHandler>& event_handler,
const GURL& service_url,
+ const std::string& sync_user_agent,
const syncer::SyncCredentials& credentials,
bool delete_sync_data_folder,
scoped_ptr<syncer::SyncManagerFactory> sync_manager_factory,
diff --git a/chrome/browser/sync/glue/sync_backend_host_mock.h b/chrome/browser/sync/glue/sync_backend_host_mock.h
index 6ec17e9..fab5d91 100644
--- a/chrome/browser/sync/glue/sync_backend_host_mock.h
+++ b/chrome/browser/sync/glue/sync_backend_host_mock.h
@@ -30,6 +30,7 @@ class SyncBackendHostMock : public SyncBackendHost {
scoped_ptr<base::Thread> sync_thread,
const syncer::WeakHandle<syncer::JsEventHandler>& event_handler,
const GURL& service_url,
+ const std::string& sync_user_agent,
const syncer::SyncCredentials& credentials,
bool delete_sync_data_folder,
scoped_ptr<syncer::SyncManagerFactory> sync_manager_factory,
diff --git a/chrome/browser/sync/profile_sync_service.cc b/chrome/browser/sync/profile_sync_service.cc
index 453252b..b144dfb 100644
--- a/chrome/browser/sync/profile_sync_service.cc
+++ b/chrome/browser/sync/profile_sync_service.cc
@@ -238,11 +238,6 @@ ProfileSyncService::ProfileSyncService(
backup_finished_(false),
clear_browsing_data_(base::Bind(&ClearBrowsingData)),
browsing_data_remover_observer_(NULL),
- sync_stopped_reporter_(
- new browser_sync::SyncStoppedReporter(
- sync_service_url_,
- profile_->GetRequestContext(),
- browser_sync::SyncStoppedReporter::ResultCallback())),
weak_factory_(this),
startup_controller_weak_factory_(this) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
@@ -271,6 +266,12 @@ ProfileSyncService::ProfileSyncService(
DCHECK(factory_.get());
local_device_ = factory_->CreateLocalDeviceInfoProvider();
+ sync_stopped_reporter_.reset(
+ new browser_sync::SyncStoppedReporter(
+ sync_service_url_,
+ local_device_->GetSyncUserAgent(),
+ profile_->GetRequestContext(),
+ browser_sync::SyncStoppedReporter::ResultCallback())),
sessions_sync_manager_.reset(
new SessionsSyncManager(profile, local_device_.get(), router.Pass()));
device_info_sync_service_.reset(
@@ -526,7 +527,9 @@ void ProfileSyncService::InitializeBackend(bool delete_stale_data) {
ClearStaleErrors();
backend_->Initialize(this, sync_thread_.Pass(), GetJsEventHandler(),
- sync_service_url_, credentials, delete_stale_data,
+ sync_service_url_,
+ local_device_->GetSyncUserAgent(),
+ credentials, delete_stale_data,
scoped_ptr<syncer::SyncManagerFactory>(
new syncer::SyncManagerFactory(GetManagerType()))
.Pass(),
diff --git a/chrome/browser/sync/profile_sync_service_unittest.cc b/chrome/browser/sync/profile_sync_service_unittest.cc
index 0d58a79..4570cc8 100644
--- a/chrome/browser/sync/profile_sync_service_unittest.cc
+++ b/chrome/browser/sync/profile_sync_service_unittest.cc
@@ -112,6 +112,7 @@ class SyncBackendHostNoReturn : public SyncBackendHostMock {
scoped_ptr<base::Thread> sync_thread,
const syncer::WeakHandle<syncer::JsEventHandler>& event_handler,
const GURL& service_url,
+ const std::string& sync_user_agent,
const syncer::SyncCredentials& credentials,
bool delete_sync_data_folder,
scoped_ptr<syncer::SyncManagerFactory> sync_manager_factory,
@@ -134,6 +135,7 @@ class SyncBackendHostMockCollectDeleteDirParam : public SyncBackendHostMock {
scoped_ptr<base::Thread> sync_thread,
const syncer::WeakHandle<syncer::JsEventHandler>& event_handler,
const GURL& service_url,
+ const std::string& sync_user_agent,
const syncer::SyncCredentials& credentials,
bool delete_sync_data_folder,
scoped_ptr<syncer::SyncManagerFactory> sync_manager_factory,
@@ -145,8 +147,8 @@ class SyncBackendHostMockCollectDeleteDirParam : public SyncBackendHostMock {
override {
delete_dir_param_->push_back(delete_sync_data_folder);
SyncBackendHostMock::Initialize(frontend, sync_thread.Pass(),
- event_handler, service_url, credentials,
- delete_sync_data_folder,
+ event_handler, service_url, sync_user_agent,
+ credentials, delete_sync_data_folder,
sync_manager_factory.Pass(),
unrecoverable_error_handler,
report_unrecoverable_error_function,
diff --git a/chrome/browser/sync/sync_stopped_reporter.cc b/chrome/browser/sync/sync_stopped_reporter.cc
index b0145f5..22fcd09 100644
--- a/chrome/browser/sync/sync_stopped_reporter.cc
+++ b/chrome/browser/sync/sync_stopped_reporter.cc
@@ -28,20 +28,17 @@ const char kEventEndpoint[] = "event";
// perspective either. This seems like a good compromise.
const int kRequestTimeoutSeconds = 10;
-std::string GetUserAgent() {
- return browser_sync::LocalDeviceInfoProviderImpl::MakeUserAgentForSyncApi();
-}
-
} // namespace
namespace browser_sync {
SyncStoppedReporter::SyncStoppedReporter(
const GURL& sync_service_url,
+ const std::string& user_agent,
const scoped_refptr<net::URLRequestContextGetter>& request_context,
const ResultCallback& callback)
: sync_event_url_(GetSyncEventURL(sync_service_url)),
- user_agent_(GetUserAgent()),
+ user_agent_(user_agent),
request_context_(request_context),
callback_(callback) {
DCHECK(!sync_service_url.is_empty());
diff --git a/chrome/browser/sync/sync_stopped_reporter.h b/chrome/browser/sync/sync_stopped_reporter.h
index a2575ec..fd5eb2ee 100644
--- a/chrome/browser/sync/sync_stopped_reporter.h
+++ b/chrome/browser/sync/sync_stopped_reporter.h
@@ -29,6 +29,7 @@ class SyncStoppedReporter : public net::URLFetcherDelegate {
typedef base::Callback<void(const Result&)> ResultCallback;
SyncStoppedReporter(const GURL& sync_service_url,
+ const std::string& user_agent,
const scoped_refptr<net::URLRequestContextGetter>& request_context,
const ResultCallback& callback);
~SyncStoppedReporter() override;
diff --git a/chrome/browser/sync/sync_stopped_reporter_unittest.cc b/chrome/browser/sync/sync_stopped_reporter_unittest.cc
index eab9f14..d8bd6e4 100644
--- a/chrome/browser/sync/sync_stopped_reporter_unittest.cc
+++ b/chrome/browser/sync/sync_stopped_reporter_unittest.cc
@@ -22,6 +22,7 @@ const char kTestURL[] = "http://chromium.org/test";
const char kTestURLTrailingSlash[] = "http://chromium.org/test/";
const char kEventURL[] = "http://chromium.org/test/event";
+const char kTestUserAgent[] = "the_fifth_element";
const char kAuthToken[] = "multipass";
const char kCacheGuid[] = "leeloo";
const char kBirthday[] = "2263";
@@ -46,6 +47,10 @@ class SyncStoppedReporterTest : public testing::Test {
return GURL(kTestURL);
}
+ std::string user_agent() const {
+ return std::string(kTestUserAgent);
+ }
+
SyncStoppedReporter::ResultCallback callback() {
return base::Bind(&SyncStoppedReporterTest::RequestFinishedCallback,
base::Unretained(this));
@@ -59,10 +64,6 @@ class SyncStoppedReporterTest : public testing::Test {
return request_context_.get();
}
- static std::string GetUserAgent() {
- return browser_sync::LocalDeviceInfoProviderImpl::MakeUserAgentForSyncApi();
- }
-
private:
base::MessageLoop message_loop_;
scoped_refptr<net::URLRequestContextGetter> request_context_;
@@ -74,7 +75,8 @@ class SyncStoppedReporterTest : public testing::Test {
// Test that the event URL gets constructed correctly.
TEST_F(SyncStoppedReporterTest, EventURL) {
net::TestURLFetcherFactory factory;
- SyncStoppedReporter ssr(GURL(kTestURL), request_context(), callback());
+ SyncStoppedReporter ssr(GURL(kTestURL), user_agent(),
+ request_context(), callback());
ssr.ReportSyncStopped(kAuthToken, kCacheGuid, kBirthday);
net::TestURLFetcher* fetcher = factory.GetFetcherByID(0);
EXPECT_EQ(kEventURL, fetcher->GetOriginalURL().spec());
@@ -83,7 +85,7 @@ TEST_F(SyncStoppedReporterTest, EventURL) {
// Test that the event URL gets constructed correctly with a trailing slash.
TEST_F(SyncStoppedReporterTest, EventURLWithSlash) {
net::TestURLFetcherFactory factory;
- SyncStoppedReporter ssr(GURL(kTestURLTrailingSlash),
+ SyncStoppedReporter ssr(GURL(kTestURLTrailingSlash), user_agent(),
request_context(), callback());
ssr.ReportSyncStopped(kAuthToken, kCacheGuid, kBirthday);
net::TestURLFetcher* fetcher = factory.GetFetcherByID(0);
@@ -93,7 +95,8 @@ TEST_F(SyncStoppedReporterTest, EventURLWithSlash) {
// Test that the URLFetcher gets configured correctly.
TEST_F(SyncStoppedReporterTest, FetcherConfiguration) {
net::TestURLFetcherFactory factory;
- SyncStoppedReporter ssr(test_url(), request_context(), callback());
+ SyncStoppedReporter ssr(test_url(), user_agent(),
+ request_context(), callback());
ssr.ReportSyncStopped(kAuthToken, kCacheGuid, kBirthday);
net::TestURLFetcher* fetcher = factory.GetFetcherByID(0);
@@ -106,7 +109,7 @@ TEST_F(SyncStoppedReporterTest, FetcherConfiguration) {
auth_header.append(kAuthToken);
EXPECT_EQ(auth_header, header);
headers.GetHeader(net::HttpRequestHeaders::kUserAgent, &header);
- EXPECT_EQ(GetUserAgent(), header);
+ EXPECT_EQ(user_agent(), header);
sync_pb::EventRequest event_request;
event_request.ParseFromString(fetcher->upload_data());
@@ -118,7 +121,8 @@ TEST_F(SyncStoppedReporterTest, FetcherConfiguration) {
TEST_F(SyncStoppedReporterTest, HappyCase) {
net::TestURLFetcherFactory factory;
- SyncStoppedReporter ssr(test_url(), request_context(), callback());
+ SyncStoppedReporter ssr(test_url(), user_agent(),
+ request_context(), callback());
ssr.ReportSyncStopped(kAuthToken, kCacheGuid, kBirthday);
net::TestURLFetcher* fetcher = factory.GetFetcherByID(0);
fetcher->set_response_code(net::HTTP_OK);
@@ -130,7 +134,8 @@ TEST_F(SyncStoppedReporterTest, HappyCase) {
TEST_F(SyncStoppedReporterTest, ServerNotFound) {
net::TestURLFetcherFactory factory;
- SyncStoppedReporter ssr(test_url(), request_context(), callback());
+ SyncStoppedReporter ssr(test_url(), user_agent(),
+ request_context(), callback());
ssr.ReportSyncStopped(kAuthToken, kCacheGuid, kBirthday);
net::TestURLFetcher* fetcher = factory.GetFetcherByID(0);
fetcher->set_response_code(net::HTTP_NOT_FOUND);
@@ -144,7 +149,8 @@ TEST_F(SyncStoppedReporterTest, DestructionDuringRequestHandler) {
net::TestURLFetcherFactory factory;
factory.set_remove_fetcher_on_delete(true);
{
- SyncStoppedReporter ssr(test_url(), request_context(), callback());
+ SyncStoppedReporter ssr(test_url(), user_agent(),
+ request_context(), callback());
ssr.ReportSyncStopped(kAuthToken, kCacheGuid, kBirthday);
EXPECT_FALSE(factory.GetFetcherByID(0) == nullptr);
}
@@ -152,7 +158,8 @@ TEST_F(SyncStoppedReporterTest, DestructionDuringRequestHandler) {
}
TEST_F(SyncStoppedReporterTest, Timeout) {
- SyncStoppedReporter ssr(test_url(), request_context(), callback());
+ SyncStoppedReporter ssr(test_url(), user_agent(),
+ request_context(), callback());
// A task runner that can trigger the timeout immediately.
scoped_refptr<base::TestSimpleTaskRunner> task_runner(
@@ -173,7 +180,7 @@ TEST_F(SyncStoppedReporterTest, Timeout) {
TEST_F(SyncStoppedReporterTest, NoCallback) {
net::TestURLFetcherFactory factory;
- SyncStoppedReporter ssr(GURL(kTestURL), request_context(),
+ SyncStoppedReporter ssr(GURL(kTestURL), user_agent(), request_context(),
SyncStoppedReporter::ResultCallback());
ssr.ReportSyncStopped(kAuthToken, kCacheGuid, kBirthday);
net::TestURLFetcher* fetcher = factory.GetFetcherByID(0);
@@ -182,7 +189,7 @@ TEST_F(SyncStoppedReporterTest, NoCallback) {
}
TEST_F(SyncStoppedReporterTest, NoCallbackTimeout) {
- SyncStoppedReporter ssr(GURL(kTestURL), request_context(),
+ SyncStoppedReporter ssr(GURL(kTestURL), user_agent(), request_context(),
SyncStoppedReporter::ResultCallback());
// A task runner that can trigger the timeout immediately.
diff --git a/components/sync_driver/local_device_info_provider.h b/components/sync_driver/local_device_info_provider.h
index 6036a7e..d61041e 100644
--- a/components/sync_driver/local_device_info_provider.h
+++ b/components/sync_driver/local_device_info_provider.h
@@ -27,6 +27,11 @@ class LocalDeviceInfoProvider {
// is destroyed.
virtual const DeviceInfo* GetLocalDeviceInfo() const = 0;
+ // Constructs a user agent string (ASCII) suitable for use by the syncapi
+ // for any HTTP communication. This string is used by the sync backend for
+ // classifying client types when calculating statistics.
+ virtual std::string GetSyncUserAgent() const = 0;
+
// Returns a GUID string used for creation of the machine tag for
// this local session; an empty sting if LocalDeviceInfoProvider hasn't been
// initialized yet.
diff --git a/components/sync_driver/local_device_info_provider_mock.cc b/components/sync_driver/local_device_info_provider_mock.cc
index 2acf49d..644c1b1 100644
--- a/components/sync_driver/local_device_info_provider_mock.cc
+++ b/components/sync_driver/local_device_info_provider_mock.cc
@@ -33,6 +33,10 @@ const DeviceInfo* LocalDeviceInfoProviderMock::GetLocalDeviceInfo() const {
return is_initialized_ ? local_device_info_.get() : NULL;
}
+std::string LocalDeviceInfoProviderMock::GetSyncUserAgent() const {
+ return "useragent";
+}
+
std::string LocalDeviceInfoProviderMock::GetLocalSyncCacheGUID() const {
return local_device_info_.get() ? local_device_info_->guid() : "";
}
diff --git a/components/sync_driver/local_device_info_provider_mock.h b/components/sync_driver/local_device_info_provider_mock.h
index 60c6a45..5cea163 100644
--- a/components/sync_driver/local_device_info_provider_mock.h
+++ b/components/sync_driver/local_device_info_provider_mock.h
@@ -26,6 +26,7 @@ class LocalDeviceInfoProviderMock
~LocalDeviceInfoProviderMock() override;
const DeviceInfo* GetLocalDeviceInfo() const override;
+ std::string GetSyncUserAgent() const override;
std::string GetLocalSyncCacheGUID() const override;
void Initialize(const std::string& cache_guid,
const std::string& signin_scoped_device_id) override;