summaryrefslogtreecommitdiffstats
path: root/ios/chrome
diff options
context:
space:
mode:
Diffstat (limited to 'ios/chrome')
-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);
};