Index: chrome/browser/metrics/variations/variations_service.cc |
diff --git a/chrome/browser/metrics/variations/variations_service.cc b/chrome/browser/metrics/variations/variations_service.cc |
index 1494d3bdab94aaff185911e0fbf9a5968b783cdd..4bca4436fcb94e9f8c42a2df649d0942c0c4af8a 100644 |
--- a/chrome/browser/metrics/variations/variations_service.cc |
+++ b/chrome/browser/metrics/variations/variations_service.cc |
@@ -17,6 +17,7 @@ |
#include "chrome/browser/network_time/network_time_tracker.h" |
#include "chrome/common/chrome_switches.h" |
#include "chrome/common/pref_names.h" |
+#include "components/user_prefs/pref_registry_syncable.h" |
#include "components/variations/proto/variations_seed.pb.h" |
#include "components/variations/variations_seed_processor.h" |
#include "content/public/browser/browser_thread.h" |
@@ -104,16 +105,18 @@ std::string GetPlatformString() { |
#endif |
} |
-// Gets the restrict parameter from |local_state| or from Chrome OS settings in |
-// the case of that platform. |
-std::string GetRestrictParameterPref(PrefService* local_state) { |
+// Gets the restrict parameter from |policy_pref_service| or from Chrome OS |
+// settings in the case of that platform. |
+std::string GetRestrictParameterPref(PrefService* policy_pref_service) { |
std::string parameter; |
#if defined(OS_CHROMEOS) |
chromeos::CrosSettings::Get()->GetString( |
chromeos::kVariationsRestrictParameter, ¶meter); |
#else |
- if (local_state) |
- parameter = local_state->GetString(prefs::kVariationsRestrictParameter); |
+ if (policy_pref_service) { |
+ parameter = |
+ policy_pref_service->GetString(prefs::kVariationsRestrictParameter); |
+ } |
#endif |
return parameter; |
} |
@@ -172,8 +175,8 @@ Study_FormFactor GetCurrentFormFactor() { |
VariationsService::VariationsService(PrefService* local_state) |
: local_state_(local_state), |
+ policy_pref_service_(local_state), |
seed_store_(local_state), |
- variations_server_url_(GetVariationsServerURL(local_state)), |
create_trials_from_seed_called_(false), |
initial_request_completed_(false), |
resource_request_allowed_notifier_( |
@@ -184,8 +187,8 @@ VariationsService::VariationsService(PrefService* local_state) |
VariationsService::VariationsService(ResourceRequestAllowedNotifier* notifier, |
PrefService* local_state) |
: local_state_(local_state), |
+ policy_pref_service_(local_state), |
seed_store_(local_state), |
- variations_server_url_(GetVariationsServerURL(NULL)), |
create_trials_from_seed_called_(false), |
initial_request_completed_(false), |
resource_request_allowed_notifier_(notifier) { |
@@ -242,6 +245,9 @@ bool VariationsService::CreateTrialsFromSeed() { |
void VariationsService::StartRepeatedVariationsSeedFetch() { |
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
+ // Initialize the Variations server URL. |
+ variations_server_url_ = GetVariationsServerURL(policy_pref_service_); |
+ |
// Check that |CreateTrialsFromSeed| was called, which is necessary to |
// retrieve the serial number that will be sent to the server. |
DCHECK(create_trials_from_seed_called_); |
@@ -258,14 +264,16 @@ void VariationsService::StartRepeatedVariationsSeedFetch() { |
} |
// static |
-GURL VariationsService::GetVariationsServerURL(PrefService* local_state) { |
+GURL VariationsService::GetVariationsServerURL( |
+ PrefService* policy_pref_service) { |
std::string server_url_string(CommandLine::ForCurrentProcess()-> |
GetSwitchValueASCII(switches::kVariationsServerURL)); |
if (server_url_string.empty()) |
server_url_string = kDefaultVariationsServerURL; |
GURL server_url = GURL(server_url_string); |
- const std::string restrict_param = GetRestrictParameterPref(local_state); |
+ const std::string restrict_param = |
+ GetRestrictParameterPref(policy_pref_service); |
if (!restrict_param.empty()) { |
server_url = net::AppendOrReplaceQueryParameter(server_url, |
"restrict", |
@@ -298,11 +306,24 @@ std::string VariationsService::GetDefaultVariationsServerURLForTesting() { |
void VariationsService::RegisterPrefs(PrefRegistrySimple* registry) { |
VariationsSeedStore::RegisterPrefs(registry); |
registry->RegisterInt64Pref(prefs::kVariationsLastFetchTime, 0); |
+ // This preference will only be written by the policy service, which will fill |
+ // it according to a value stored in the User Policy. |
registry->RegisterStringPref(prefs::kVariationsRestrictParameter, |
std::string()); |
} |
// static |
+void VariationsService::RegisterProfilePrefs( |
+ user_prefs::PrefRegistrySyncable* registry) { |
+ // This preference will only be written by the policy service, which will fill |
+ // it according to a value stored in the User Policy. |
+ registry->RegisterStringPref( |
+ prefs::kVariationsRestrictParameter, |
+ std::string(), |
+ user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
+} |
+ |
+// static |
VariationsService* VariationsService::Create(PrefService* local_state) { |
#if !defined(GOOGLE_CHROME_BUILD) |
// Unless the URL was provided, unsupported builds should return NULL to |