diff options
author | sdefresne <sdefresne@chromium.org> | 2015-10-07 03:52:13 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-10-07 10:53:40 +0000 |
commit | 267391c2e694607419c9dcc2cb15e5a4423e7ca7 (patch) | |
tree | 66f1e5d55ef7d080c69165d6b74be446aca12bbb | |
parent | ac7b2564c8ee6dc6d483991f47b984a6a3dd87a8 (diff) | |
download | chromium_src-267391c2e694607419c9dcc2cb15e5a4423e7ca7.zip chromium_src-267391c2e694607419c9dcc2cb15e5a4423e7ca7.tar.gz chromium_src-267391c2e694607419c9dcc2cb15e5a4423e7ca7.tar.bz2 |
Provides iOS implementation of some metrics services.
Add a method GetNetworkTimeTracker() to ApplicationContext, implement it
in ApplicationContextImpl and change BrowserProcess to delegate to this
method instead.
Provide an implementation of VariationsServiceClient on iOS now that all
necessary method are available via IOSChromeVariationsServiceClient.
Add support for generating UIStringOverrider on iOS based on the generated
grit headers for //components and //ios strings.
BUG=516659
Review URL: https://codereview.chromium.org/1392593002
Cr-Commit-Position: refs/heads/master@{#352813}
-rw-r--r-- | ios/chrome/browser/application_context.h | 7 | ||||
-rw-r--r-- | ios/chrome/browser/application_context_impl.cc | 17 | ||||
-rw-r--r-- | ios/chrome/browser/application_context_impl.h | 2 | ||||
-rw-r--r-- | ios/chrome/browser/variations/ios_chrome_variations_service_client.cc | 62 | ||||
-rw-r--r-- | ios/chrome/browser/variations/ios_chrome_variations_service_client.h | 33 | ||||
-rw-r--r-- | ios/chrome/ios_chrome.gyp | 9 | ||||
-rw-r--r-- | ios/chrome/ios_chrome_resources.gyp | 70 | ||||
-rw-r--r-- | ios/chrome/test/DEPS | 1 | ||||
-rw-r--r-- | ios/chrome/test/testing_application_context.cc | 18 | ||||
-rw-r--r-- | ios/chrome/test/testing_application_context.h | 3 |
10 files changed, 219 insertions, 3 deletions
diff --git a/ios/chrome/browser/application_context.h b/ios/chrome/browser/application_context.h index db856c6..9cf30da 100644 --- a/ios/chrome/browser/application_context.h +++ b/ios/chrome/browser/application_context.h @@ -25,6 +25,10 @@ namespace net_log { class ChromeNetLog; } +namespace network_time { +class NetworkTimeTracker; +} + namespace policy { class BrowserPolicyConnector; } @@ -68,6 +72,9 @@ class ApplicationContext { // Gets the ChromeNetLog. virtual net_log::ChromeNetLog* GetNetLog() = 0; + // Gets the NetworkTimeTracker. + virtual network_time::NetworkTimeTracker* GetNetworkTimeTracker() = 0; + protected: // Sets the global ApplicationContext instance. static void SetApplicationContext(ApplicationContext* context); diff --git a/ios/chrome/browser/application_context_impl.cc b/ios/chrome/browser/application_context_impl.cc index 8b3eec7..5946416 100644 --- a/ios/chrome/browser/application_context_impl.cc +++ b/ios/chrome/browser/application_context_impl.cc @@ -7,7 +7,9 @@ #include "base/command_line.h" #include "base/files/file_path.h" #include "base/logging.h" +#include "base/time/default_tick_clock.h" #include "components/net_log/chrome_net_log.h" +#include "components/network_time/network_time_tracker.h" #include "components/translate/core/browser/translate_download_manager.h" #include "ios/chrome/common/channel_info.h" #include "ios/public/provider/chrome/browser/chrome_browser_provider.h" @@ -54,22 +56,37 @@ void ApplicationContextImpl::SetApplicationLocale(const std::string& locale) { ios::ChromeBrowserStateManager* ApplicationContextImpl::GetChromeBrowserStateManager() { + DCHECK(thread_checker_.CalledOnValidThread()); return ios::GetChromeBrowserProvider()->GetChromeBrowserStateManager(); } metrics::MetricsService* ApplicationContextImpl::GetMetricsService() { + DCHECK(thread_checker_.CalledOnValidThread()); return ios::GetChromeBrowserProvider()->GetMetricsService(); } policy::BrowserPolicyConnector* ApplicationContextImpl::GetBrowserPolicyConnector() { + DCHECK(thread_checker_.CalledOnValidThread()); return ios::GetChromeBrowserProvider()->GetBrowserPolicyConnector(); } rappor::RapporService* ApplicationContextImpl::GetRapporService() { + DCHECK(thread_checker_.CalledOnValidThread()); return ios::GetChromeBrowserProvider()->GetRapporService(); } net_log::ChromeNetLog* ApplicationContextImpl::GetNetLog() { + DCHECK(thread_checker_.CalledOnValidThread()); return net_log_.get(); } + +network_time::NetworkTimeTracker* +ApplicationContextImpl::GetNetworkTimeTracker() { + DCHECK(thread_checker_.CalledOnValidThread()); + if (!network_time_tracker_) { + network_time_tracker_.reset(new network_time::NetworkTimeTracker( + make_scoped_ptr(new base::DefaultTickClock), GetLocalState())); + } + return network_time_tracker_.get(); +} diff --git a/ios/chrome/browser/application_context_impl.h b/ios/chrome/browser/application_context_impl.h index dd7e0a1..162954a 100644 --- a/ios/chrome/browser/application_context_impl.h +++ b/ios/chrome/browser/application_context_impl.h @@ -34,9 +34,11 @@ class ApplicationContextImpl : public ApplicationContext { policy::BrowserPolicyConnector* GetBrowserPolicyConnector() override; rappor::RapporService* GetRapporService() override; net_log::ChromeNetLog* GetNetLog() override; + network_time::NetworkTimeTracker* GetNetworkTimeTracker() override; base::ThreadChecker thread_checker_; scoped_ptr<net_log::ChromeNetLog> net_log_; + scoped_ptr<network_time::NetworkTimeTracker> network_time_tracker_; std::string application_locale_; DISALLOW_COPY_AND_ASSIGN(ApplicationContextImpl); diff --git a/ios/chrome/browser/variations/ios_chrome_variations_service_client.cc b/ios/chrome/browser/variations/ios_chrome_variations_service_client.cc new file mode 100644 index 0000000..066d53e --- /dev/null +++ b/ios/chrome/browser/variations/ios_chrome_variations_service_client.cc @@ -0,0 +1,62 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ios/chrome/browser/variations/ios_chrome_variations_service_client.h" + +#include "base/bind.h" +#include "base/version.h" +#include "components/version_info/version_info.h" +#include "ios/chrome/browser/application_context.h" +#include "ios/chrome/common/channel_info.h" +#include "ios/web/public/web_thread.h" + +namespace { + +// Gets the version number to use for variations seed simulation. Must be called +// on a thread where IO is allowed. +base::Version GetVersionForSimulation() { + // TODO(asvitkine): Get the version that will be used on restart instead of + // the current version. + return base::Version(version_info::GetVersionNumber()); +} + +} // namespace + +IOSChromeVariationsServiceClient::IOSChromeVariationsServiceClient() {} + +IOSChromeVariationsServiceClient::~IOSChromeVariationsServiceClient() {} + +std::string IOSChromeVariationsServiceClient::GetApplicationLocale() { + return GetApplicationContext()->GetApplicationLocale(); +} + +base::SequencedWorkerPool* IOSChromeVariationsServiceClient::GetBlockingPool() { + return web::WebThread::GetBlockingPool(); +} + +base::Callback<base::Version()> +IOSChromeVariationsServiceClient::GetVersionForSimulationCallback() { + return base::Bind(&GetVersionForSimulation); +} + +net::URLRequestContextGetter* +IOSChromeVariationsServiceClient::GetURLRequestContext() { + return GetApplicationContext()->GetSystemURLRequestContext(); +} + +network_time::NetworkTimeTracker* +IOSChromeVariationsServiceClient::GetNetworkTimeTracker() { + return GetApplicationContext()->GetNetworkTimeTracker(); +} + +version_info::Channel IOSChromeVariationsServiceClient::GetChannel() { + return ::GetChannel(); +} + +bool IOSChromeVariationsServiceClient::OverridesRestrictParameter( + std::string* parameter) { + return false; +} + +void IOSChromeVariationsServiceClient::OnInitialStartup() {} diff --git a/ios/chrome/browser/variations/ios_chrome_variations_service_client.h b/ios/chrome/browser/variations/ios_chrome_variations_service_client.h new file mode 100644 index 0000000..6be4a28 --- /dev/null +++ b/ios/chrome/browser/variations/ios_chrome_variations_service_client.h @@ -0,0 +1,33 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef IOS_CHROME_BROWSER_VARIATIONS_IOS_CHROME_VARIATIONS_SERVICE_CLIENT_H_ +#define IOS_CHROME_BROWSER_VARIATIONS_IOS_CHROME_VARIATIONS_SERVICE_CLIENT_H_ + +#include "base/macros.h" +#include "components/variations/service/variations_service_client.h" + +// IOSChromeVariationsServiceClient provides an implementation of +// VariationsServiceClient that depends on ios/chrome/. +class IOSChromeVariationsServiceClient + : public variations::VariationsServiceClient { + public: + IOSChromeVariationsServiceClient(); + ~IOSChromeVariationsServiceClient() override; + + private: + // variations::VariationsServiceClient implementation. + std::string GetApplicationLocale() override; + base::SequencedWorkerPool* GetBlockingPool() override; + base::Callback<base::Version()> GetVersionForSimulationCallback() override; + net::URLRequestContextGetter* GetURLRequestContext() override; + network_time::NetworkTimeTracker* GetNetworkTimeTracker() override; + version_info::Channel GetChannel() override; + bool OverridesRestrictParameter(std::string* parameter) override; + void OnInitialStartup() override; + + DISALLOW_COPY_AND_ASSIGN(IOSChromeVariationsServiceClient); +}; + +#endif // IOS_CHROME_BROWSER_VARIATIONS_IOS_CHROME_VARIATIONS_SERVICE_CLIENT_H_ diff --git a/ios/chrome/ios_chrome.gyp b/ios/chrome/ios_chrome.gyp index 476168b..ddba590 100644 --- a/ios/chrome/ios_chrome.gyp +++ b/ios/chrome/ios_chrome.gyp @@ -92,6 +92,7 @@ '../../components/components.gyp:update_client', '../../components/components.gyp:upload_list', '../../components/components.gyp:variations', + '../../components/components.gyp:variations_service', '../../components/components.gyp:version_info', '../../components/components.gyp:web_resource', '../../components/components.gyp:webdata_services', @@ -111,6 +112,8 @@ 'injected_js', 'ios_chrome_common', 'ios_chrome_resources.gyp:ios_chrome_resources', + 'ios_chrome_resources.gyp:ios_chrome_ui_string_overrider_factory', + 'ios_chrome_resources.gyp:ios_chrome_ui_string_overrider_factory_gen', ], 'link_settings': { 'libraries': [ @@ -282,10 +285,10 @@ 'browser/memory/memory_metrics.h', 'browser/metrics/field_trial_synchronizer.cc', 'browser/metrics/field_trial_synchronizer.h', - 'browser/metrics/ios_chrome_metrics_service_accessor.h', 'browser/metrics/ios_chrome_metrics_service_accessor.cc', - 'browser/metrics/ios_chrome_stability_metrics_provider.h', + 'browser/metrics/ios_chrome_metrics_service_accessor.h', 'browser/metrics/ios_chrome_stability_metrics_provider.cc', + 'browser/metrics/ios_chrome_stability_metrics_provider.h', 'browser/metrics/ios_stability_metrics_provider.h', 'browser/metrics/ios_stability_metrics_provider.mm', 'browser/metrics/previous_session_info.h', @@ -486,6 +489,8 @@ 'browser/updatable_config/updatable_dictionary.mm', 'browser/update_client/ios_chrome_update_query_params_delegate.cc', 'browser/update_client/ios_chrome_update_query_params_delegate.h', + 'browser/variations/ios_chrome_variations_service_client.cc', + 'browser/variations/ios_chrome_variations_service_client.h', 'browser/web/dom_altering_lock.h', 'browser/web/dom_altering_lock.mm', 'browser/web/web_view_type_util.h', diff --git a/ios/chrome/ios_chrome_resources.gyp b/ios/chrome/ios_chrome_resources.gyp index cadbbe3..d23d4eb 100644 --- a/ios/chrome/ios_chrome_resources.gyp +++ b/ios/chrome/ios_chrome_resources.gyp @@ -7,6 +7,28 @@ 'chromium_code': 1, 'grit_base_dir': '<(SHARED_INTERMEDIATE_DIR)', 'grit_out_dir': '<(grit_base_dir)/ios/chrome', + 'ui_string_overrider_inputs': [ + '<(SHARED_INTERMEDIATE_DIR)/components/strings/grit/components_strings.h', + '<(SHARED_INTERMEDIATE_DIR)/ios/chrome/grit/ios_strings.h', + ], + 'ui_string_overrider_output_basename': + 'ios/chrome/browser/variations/ios_ui_string_overrider_factory', + 'ui_string_overrider_script_name': + '../../components/variations/service/generate_ui_string_overrider.py', + 'conditions': [ + ['branding=="Chromium"', { + 'ui_string_overrider_inputs': [ + '<(SHARED_INTERMEDIATE_DIR)/components/strings/grit/components_chromium_strings.h', + '<(SHARED_INTERMEDIATE_DIR)/ios/chrome/grit/ios_chromium_strings.h', + ], + }], + ['branding=="Chrome"', { + 'ui_string_overrider_inputs': [ + '<(SHARED_INTERMEDIATE_DIR)/components/strings/grit/components_google_chrome_strings.h', + '<(SHARED_INTERMEDIATE_DIR)/ios/chrome/grit/ios_google_chrome_strings.h', + ], + }], + ], }, 'targets': [ { @@ -183,6 +205,52 @@ }, ], }, + { + 'target_name': 'ios_chrome_ui_string_overrider_factory_gen', + 'type': 'none', + 'hard_dependency': 1, + 'direct_dependent_settings': { + 'include_dirs': [ + '<(SHARED_INTERMEDIATE_DIR)', + ], + }, + 'dependencies': [ + '../../components/components_strings.gyp:components_strings', + 'ios_strings_gen', + ], + 'actions': [ + { + 'action_name': 'generate_ios_ui_string_overrider', + 'inputs': [ + '<(ui_string_overrider_script_name)', + '<@(ui_string_overrider_inputs)', + ], + 'outputs': [ + '<(SHARED_INTERMEDIATE_DIR)/<(ui_string_overrider_output_basename).cc', + '<(SHARED_INTERMEDIATE_DIR)/<(ui_string_overrider_output_basename).h', + ], + 'action': [ + 'python', + '<(ui_string_overrider_script_name)', + '-o', '<(SHARED_INTERMEDIATE_DIR)', + '-S', '<(ui_string_overrider_output_basename).cc', + '-H', '<(ui_string_overrider_output_basename).h', + '<@(ui_string_overrider_inputs)', + ], + }, + ], + }, + { + 'target_name': 'ios_chrome_ui_string_overrider_factory', + 'type': 'static_library', + 'dependencies': [ + '../../components/components.gyp:variations_service', + 'ios_chrome_ui_string_overrider_factory_gen', + ], + 'sources': [ + '<(SHARED_INTERMEDIATE_DIR)/<(ui_string_overrider_output_basename).cc', + '<(SHARED_INTERMEDIATE_DIR)/<(ui_string_overrider_output_basename).h', + ], + }, ], } - diff --git a/ios/chrome/test/DEPS b/ios/chrome/test/DEPS index 0614aac..335ddd6 100644 --- a/ios/chrome/test/DEPS +++ b/ios/chrome/test/DEPS @@ -1,4 +1,5 @@ include_rules = [ + "+components/network_time", "+ios/chrome/browser", "+ios/public/provider/chrome", "+ios/public/test", diff --git a/ios/chrome/test/testing_application_context.cc b/ios/chrome/test/testing_application_context.cc index 4b70b86..014a913 100644 --- a/ios/chrome/test/testing_application_context.cc +++ b/ios/chrome/test/testing_application_context.cc @@ -5,6 +5,8 @@ #include "ios/chrome/test/testing_application_context.h" #include "base/logging.h" +#include "base/time/default_tick_clock.h" +#include "components/network_time/network_time_tracker.h" #include "ios/public/provider/chrome/browser/chrome_browser_provider.h" TestingApplicationContext::TestingApplicationContext() @@ -54,22 +56,38 @@ const std::string& TestingApplicationContext::GetApplicationLocale() { ios::ChromeBrowserStateManager* TestingApplicationContext::GetChromeBrowserStateManager() { + DCHECK(thread_checker_.CalledOnValidThread()); return chrome_browser_state_manager_; } metrics::MetricsService* TestingApplicationContext::GetMetricsService() { + DCHECK(thread_checker_.CalledOnValidThread()); return nullptr; } policy::BrowserPolicyConnector* TestingApplicationContext::GetBrowserPolicyConnector() { + DCHECK(thread_checker_.CalledOnValidThread()); return nullptr; } rappor::RapporService* TestingApplicationContext::GetRapporService() { + DCHECK(thread_checker_.CalledOnValidThread()); return nullptr; } net_log::ChromeNetLog* TestingApplicationContext::GetNetLog() { + DCHECK(thread_checker_.CalledOnValidThread()); return nullptr; } + +network_time::NetworkTimeTracker* +TestingApplicationContext::GetNetworkTimeTracker() { + DCHECK(thread_checker_.CalledOnValidThread()); + if (!network_time_tracker_) { + DCHECK(local_state_); + network_time_tracker_.reset(new network_time::NetworkTimeTracker( + make_scoped_ptr(new base::DefaultTickClock), local_state_)); + } + return network_time_tracker_.get(); +} diff --git a/ios/chrome/test/testing_application_context.h b/ios/chrome/test/testing_application_context.h index 37505f6..0c073c3 100644 --- a/ios/chrome/test/testing_application_context.h +++ b/ios/chrome/test/testing_application_context.h @@ -6,6 +6,7 @@ #define IOS_CHROME_TEST_TESTING_APPLICATION_CONTEXT_H_ #include "base/macros.h" +#include "base/memory/scoped_ptr.h" #include "base/threading/thread_checker.h" #include "ios/chrome/browser/application_context.h" @@ -33,12 +34,14 @@ class TestingApplicationContext : public ApplicationContext { policy::BrowserPolicyConnector* GetBrowserPolicyConnector() override; rappor::RapporService* GetRapporService() override; net_log::ChromeNetLog* GetNetLog() override; + network_time::NetworkTimeTracker* GetNetworkTimeTracker() override; private: base::ThreadChecker thread_checker_; std::string application_locale_; PrefService* local_state_; ios::ChromeBrowserStateManager* chrome_browser_state_manager_; + scoped_ptr<network_time::NetworkTimeTracker> network_time_tracker_; DISALLOW_COPY_AND_ASSIGN(TestingApplicationContext); }; |