summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsdefresne <sdefresne@chromium.org>2015-10-07 03:52:13 -0700
committerCommit bot <commit-bot@chromium.org>2015-10-07 10:53:40 +0000
commit267391c2e694607419c9dcc2cb15e5a4423e7ca7 (patch)
tree66f1e5d55ef7d080c69165d6b74be446aca12bbb
parentac7b2564c8ee6dc6d483991f47b984a6a3dd87a8 (diff)
downloadchromium_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.h7
-rw-r--r--ios/chrome/browser/application_context_impl.cc17
-rw-r--r--ios/chrome/browser/application_context_impl.h2
-rw-r--r--ios/chrome/browser/variations/ios_chrome_variations_service_client.cc62
-rw-r--r--ios/chrome/browser/variations/ios_chrome_variations_service_client.h33
-rw-r--r--ios/chrome/ios_chrome.gyp9
-rw-r--r--ios/chrome/ios_chrome_resources.gyp70
-rw-r--r--ios/chrome/test/DEPS1
-rw-r--r--ios/chrome/test/testing_application_context.cc18
-rw-r--r--ios/chrome/test/testing_application_context.h3
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);
};