From b18b920ba602a4103bbe0bdfb2803a44dc5f42d0 Mon Sep 17 00:00:00 2001 From: maxbogue Date: Tue, 11 Aug 2015 10:52:12 -0700 Subject: [PATCH] [Sync] Remove calls to MakeUserAgentForSyncApi. BUG=512036 Review URL: https://codereview.chromium.org/1258563009 Cr-Commit-Position: refs/heads/master@{#342842} --- .../sync/glue/local_device_info_provider_impl.cc | 20 ++++++------- .../sync/glue/local_device_info_provider_impl.h | 7 ++--- .../glue/local_device_info_provider_unittest.cc | 5 ++-- chrome/browser/sync/glue/sync_backend_host.h | 1 + chrome/browser/sync/glue/sync_backend_host_core.cc | 5 ++-- chrome/browser/sync/glue/sync_backend_host_core.h | 2 ++ chrome/browser/sync/glue/sync_backend_host_impl.cc | 3 +- chrome/browser/sync/glue/sync_backend_host_impl.h | 1 + .../sync/glue/sync_backend_host_impl_unittest.cc | 1 + chrome/browser/sync/glue/sync_backend_host_mock.cc | 1 + chrome/browser/sync/glue/sync_backend_host_mock.h | 1 + chrome/browser/sync/profile_sync_service.cc | 15 ++++++---- .../browser/sync/profile_sync_service_unittest.cc | 6 ++-- chrome/browser/sync/sync_stopped_reporter.cc | 7 ++--- chrome/browser/sync/sync_stopped_reporter.h | 1 + .../browser/sync/sync_stopped_reporter_unittest.cc | 35 +++++++++++++--------- .../sync_driver/local_device_info_provider.h | 5 ++++ .../sync_driver/local_device_info_provider_mock.cc | 4 +++ .../sync_driver/local_device_info_provider_mock.h | 1 + 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 9a59c4cc00c0..329cbaae3f7a 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 7764c9512e91..7323cf2db057 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 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 66afcf43137d..9176c3070e1b 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 4ec057ac3966..9ef864c99280 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 sync_thread, const syncer::WeakHandle& event_handler, const GURL& service_url, + const std::string& sync_user_agent, const syncer::SyncCredentials& credentials, bool delete_sync_data_folder, scoped_ptr 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 d08e1a5fea4e..621c54cac4cb 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& extensions_activity, const syncer::WeakHandle& event_handler, const GURL& service_url, + const std::string& sync_user_agent, scoped_ptr 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 bcd0ea980c81..489f1af2176b 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& extensions_activity, const syncer::WeakHandle& event_handler, const GURL& service_url, + const std::string& sync_user_agent, scoped_ptr http_bridge_factory, const syncer::SyncCredentials& credentials, const std::string& invalidator_client_id, @@ -54,6 +55,7 @@ struct DoInitializeOptions { scoped_refptr extensions_activity; syncer::WeakHandle event_handler; GURL service_url; + std::string sync_user_agent; // Overridden by tests. scoped_ptr 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 598c0e16ea65..d04ac0bf13be 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 sync_thread, const syncer::WeakHandle& event_handler, const GURL& sync_service_url, + const std::string& sync_user_agent, const syncer::SyncCredentials& credentials, bool delete_sync_data_folder, scoped_ptr sync_manager_factory, @@ -148,7 +149,7 @@ void SyncBackendHostImpl::Initialize( scoped_ptr 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 3f1501838457..21b7acb3beb0 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 sync_thread, const syncer::WeakHandle& event_handler, const GURL& service_url, + const std::string& sync_user_agent, const syncer::SyncCredentials& credentials, bool delete_sync_data_folder, scoped_ptr 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 9539b9c675f5..3723793135e6 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(), syncer::WeakHandle(), 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 d63f7c4b7eea..a6deee12e18f 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 sync_thread, const syncer::WeakHandle& event_handler, const GURL& service_url, + const std::string& sync_user_agent, const syncer::SyncCredentials& credentials, bool delete_sync_data_folder, scoped_ptr 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 6ec17e9dd6dc..fab5d91ca4cc 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 sync_thread, const syncer::WeakHandle& event_handler, const GURL& service_url, + const std::string& sync_user_agent, const syncer::SyncCredentials& credentials, bool delete_sync_data_folder, scoped_ptr sync_manager_factory, diff --git a/chrome/browser/sync/profile_sync_service.cc b/chrome/browser/sync/profile_sync_service.cc index 453252b16afb..b144dfb55d52 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( 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 0d58a79ba0fc..4570cc8deb03 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 sync_thread, const syncer::WeakHandle& event_handler, const GURL& service_url, + const std::string& sync_user_agent, const syncer::SyncCredentials& credentials, bool delete_sync_data_folder, scoped_ptr sync_manager_factory, @@ -134,6 +135,7 @@ class SyncBackendHostMockCollectDeleteDirParam : public SyncBackendHostMock { scoped_ptr sync_thread, const syncer::WeakHandle& event_handler, const GURL& service_url, + const std::string& sync_user_agent, const syncer::SyncCredentials& credentials, bool delete_sync_data_folder, scoped_ptr 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 b0145f5e3fde..22fcd09a8a41 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& 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 a2575ec3d0fd..fd5eb2ee2e6d 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 ResultCallback; SyncStoppedReporter(const GURL& sync_service_url, + const std::string& user_agent, const scoped_refptr& 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 eab9f14e3b48..d8bd6e4de88e 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 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 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 6036a7e7b8ec..d61041e9e76a 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 2acf49dbd724..644c1b1de04c 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 60c6a45294aa..5cea16309d8a 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; -- 2.11.4.GIT