| Index: chrome/browser/android/data_usage/external_data_use_observer_bridge.cc
|
| diff --git a/chrome/browser/android/data_usage/external_data_use_observer_bridge.cc b/chrome/browser/android/data_usage/external_data_use_observer_bridge.cc
|
| index 03b0e7220f4bcc993be5ba5e5e58dda7bbb2e09a..01f57f4fc9366e3da0a15c7a53a07ad7c32434c3 100644
|
| --- a/chrome/browser/android/data_usage/external_data_use_observer_bridge.cc
|
| +++ b/chrome/browser/android/data_usage/external_data_use_observer_bridge.cc
|
| @@ -12,6 +12,7 @@
|
| #include "base/metrics/field_trial.h"
|
| #include "base/metrics/histogram_macros.h"
|
| #include "base/single_thread_task_runner.h"
|
| +#include "base/strings/string_number_conversions.h"
|
| #include "base/time/time.h"
|
| #include "chrome/browser/android/data_usage/data_use_tab_model.h"
|
| #include "chrome/browser/android/data_usage/external_data_use_observer.h"
|
| @@ -38,6 +39,20 @@ const std::string GetControlAppPackageName() {
|
| "control_app_package_name");
|
| }
|
|
|
| +// Returns the google variation ID from the field trial.
|
| +variations::VariationID GetGoogleVariationID() {
|
| + variations::VariationID variation_id;
|
| + std::string variation_value = variations::GetVariationParamValue(
|
| + chrome::android::ExternalDataUseObserver::
|
| + kExternalDataUseObserverFieldTrial,
|
| + "variation_id");
|
| + if (!variation_value.empty() &&
|
| + base::StringToInt(variation_value, &variation_id)) {
|
| + return variation_id;
|
| + }
|
| + return variations::EMPTY_ID;
|
| +}
|
| +
|
| } // namespace
|
|
|
| namespace chrome {
|
| @@ -195,18 +210,20 @@ void ExternalDataUseObserverBridge::ShouldRegisterAsDataUseObserver(
|
| base::Bind(&ExternalDataUseObserver::ShouldRegisterAsDataUseObserver,
|
| external_data_use_observer_, should_register));
|
|
|
| - // Set or clear the variation id for the enabled group.
|
| - JNIEnv* env = base::android::AttachCurrentThread();
|
| - variations::AssociateGoogleVariationID(
|
| - variations::GOOGLE_WEB_PROPERTIES, kSyntheticFieldTrial,
|
| - kSyntheticFieldTrialEnabledGroup,
|
| - should_register ? Java_ExternalDataUseObserver_getGoogleVariationID(
|
| - env, j_external_data_use_observer_.obj())
|
| - : variations::EMPTY_ID);
|
| - ChromeMetricsServiceAccessor::RegisterSyntheticFieldTrial(
|
| - kSyntheticFieldTrial, should_register
|
| - ? kSyntheticFieldTrialEnabledGroup
|
| - : kSyntheticFieldTrialDisabledGroup);
|
| + variations::VariationID variation_id = GetGoogleVariationID();
|
| + if (variation_id != variations::EMPTY_ID) {
|
| + // Set variation id for the enabled group if |should_register| is true.
|
| + // Otherwise clear the variation id for the enabled group by setting to
|
| + // EMPTY_ID.
|
| + variations::AssociateGoogleVariationID(
|
| + variations::GOOGLE_WEB_PROPERTIES, kSyntheticFieldTrial,
|
| + kSyntheticFieldTrialEnabledGroup,
|
| + should_register ? variation_id : variations::EMPTY_ID);
|
| + ChromeMetricsServiceAccessor::RegisterSyntheticFieldTrial(
|
| + kSyntheticFieldTrial, should_register
|
| + ? kSyntheticFieldTrialEnabledGroup
|
| + : kSyntheticFieldTrialDisabledGroup);
|
| + }
|
| }
|
|
|
| bool RegisterExternalDataUseObserver(JNIEnv* env) {
|
|
|