summaryrefslogtreecommitdiff
path: root/chromium/components/variations
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2016-08-01 12:59:39 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2016-08-04 12:40:43 +0000
commit28b1110370900897ab652cb420c371fab8857ad4 (patch)
tree41b32127d23b0df4f2add2a27e12dc87bddb260e /chromium/components/variations
parent399c965b6064c440ddcf4015f5f8e9d131c7a0a6 (diff)
downloadqtwebengine-chromium-28b1110370900897ab652cb420c371fab8857ad4.tar.gz
BASELINE: Update Chromium to 53.0.2785.41
Also adds a few extra files for extensions. Change-Id: Iccdd55d98660903331cf8b7b29188da781830af4 Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'chromium/components/variations')
-rw-r--r--chromium/components/variations/variations_http_header_provider.cc3
-rw-r--r--chromium/components/variations/variations_seed_processor.cc10
-rw-r--r--chromium/components/variations/variations_seed_processor_unittest.cc15
3 files changed, 27 insertions, 1 deletions
diff --git a/chromium/components/variations/variations_http_header_provider.cc b/chromium/components/variations/variations_http_header_provider.cc
index 2739aef04f1..d77a4bf8e3d 100644
--- a/chromium/components/variations/variations_http_header_provider.cc
+++ b/chromium/components/variations/variations_http_header_provider.cc
@@ -16,6 +16,7 @@
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_split.h"
#include "base/strings/string_util.h"
+#include "base/threading/thread_task_runner_handle.h"
#include "components/variations/proto/client_variations.pb.h"
namespace variations {
@@ -139,7 +140,7 @@ void VariationsHttpHeaderProvider::InitVariationIDsCacheIfNeeded() {
// Register for additional cache updates. This is done first to avoid a race
// that could cause registered FieldTrials to be missed.
- DCHECK(base::MessageLoop::current());
+ DCHECK(base::ThreadTaskRunnerHandle::IsSet());
base::FieldTrialList::AddObserver(this);
base::TimeTicks before_time = base::TimeTicks::Now();
diff --git a/chromium/components/variations/variations_seed_processor.cc b/chromium/components/variations/variations_seed_processor.cc
index fb4d7e56700..b152ddb302c 100644
--- a/chromium/components/variations/variations_seed_processor.cc
+++ b/chromium/components/variations/variations_seed_processor.cc
@@ -221,6 +221,16 @@ void VariationsSeedProcessor::CreateTrialFromStudy(
base::FeatureList* feature_list) {
const Study& study = *processed_study.study();
+ // If the trial already exists, check if the selected group exists in the
+ // |processed_study|. If not, there is nothing to do here.
+ base::FieldTrial* existing_trial = base::FieldTrialList::Find(study.name());
+ if (existing_trial) {
+ int experiment_index = processed_study.GetExperimentIndexByName(
+ existing_trial->GetGroupNameWithoutActivation());
+ if (experiment_index == -1)
+ return;
+ }
+
// Check if any experiments need to be forced due to a command line
// flag. Force the first experiment with an existing flag.
base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
diff --git a/chromium/components/variations/variations_seed_processor_unittest.cc b/chromium/components/variations/variations_seed_processor_unittest.cc
index d6207ff3288..1ab8a497a38 100644
--- a/chromium/components/variations/variations_seed_processor_unittest.cc
+++ b/chromium/components/variations/variations_seed_processor_unittest.cc
@@ -40,6 +40,7 @@ const char kFlagStudyName[] = "flag_test_trial";
const char kFlagGroup1Name[] = "flag_group1";
const char kFlagGroup2Name[] = "flag_group2";
const char kNonFlagGroupName[] = "non_flag_group";
+const char kOtherGroupName[] = "other_group";
const char kForcingFlag1[] = "flag_test1";
const char kForcingFlag2[] = "flag_test2";
@@ -227,6 +228,20 @@ TEST_F(VariationsSeedProcessorTest, ForceGroup_DontChooseGroupWithFlag) {
base::FieldTrialList::FindFullName(kFlagStudyName));
}
+TEST_F(VariationsSeedProcessorTest, CreateTrialForRegisteredGroup) {
+ base::FieldTrialList field_trial_list(nullptr);
+
+ base::FieldTrialList::CreateFieldTrial(kFlagStudyName, kOtherGroupName);
+
+ // Create an arbitrary study that does not have group named |kOtherGroupName|.
+ Study study = CreateStudyWithFlagGroups(100, 0, 0);
+ // Creating the trial should not crash.
+ EXPECT_TRUE(CreateTrialFromStudy(study));
+ // And the previous group should still be selected.
+ EXPECT_EQ(kOtherGroupName,
+ base::FieldTrialList::FindFullName(kFlagStudyName));
+}
+
TEST_F(VariationsSeedProcessorTest,
NonExpiredStudyPrioritizedOverExpiredStudy) {
VariationsSeedProcessor seed_processor;