| Index: base/metrics/field_trial_unittest.cc
|
| diff --git a/base/metrics/field_trial_unittest.cc b/base/metrics/field_trial_unittest.cc
|
| index bb45bd717e02f3e527efd775bf60ba821c034801..be96aa6ceeab060339534704af7812457360f35e 100644
|
| --- a/base/metrics/field_trial_unittest.cc
|
| +++ b/base/metrics/field_trial_unittest.cc
|
| @@ -1143,12 +1143,50 @@ TEST(FieldTrialListTest, TestCopyFieldTrialStateToFlags) {
|
| base::FilePath test_file_path = base::FilePath(FILE_PATH_LITERAL("Program"));
|
| base::CommandLine cmd_line = base::CommandLine(test_file_path);
|
|
|
| - std::unique_ptr<base::SharedMemory> field_trial_state =
|
| - base::FieldTrialList::CopyFieldTrialStateToFlags("field-trial-handle",
|
| - &cmd_line);
|
| + base::FieldTrialList::CopyFieldTrialStateToFlags("field-trial-handle",
|
| + &cmd_line);
|
|
|
| - EXPECT_TRUE(field_trial_state.get() == nullptr);
|
| EXPECT_TRUE(cmd_line.HasSwitch(switches::kForceFieldTrials));
|
| }
|
|
|
| +TEST(FieldTrialListTest, InstantiateAllocator) {
|
| + FieldTrialList field_trial_list(nullptr);
|
| + FieldTrialList::CreateFieldTrial("Trial1", "Group1");
|
| +
|
| + FieldTrialList::InstantiateFieldTrialAllocatorIfNeeded();
|
| + void* memory = field_trial_list.field_trial_allocator_->shared_memory();
|
| + size_t used = field_trial_list.field_trial_allocator_->used();
|
| +
|
| + // Ensure that the function is idempotent.
|
| + FieldTrialList::InstantiateFieldTrialAllocatorIfNeeded();
|
| + void* new_memory = field_trial_list.field_trial_allocator_->shared_memory();
|
| + size_t new_used = field_trial_list.field_trial_allocator_->used();
|
| + EXPECT_EQ(memory, new_memory);
|
| + EXPECT_EQ(used, new_used);
|
| +}
|
| +
|
| +TEST(FieldTrialListTest, AddTrialsToAllocator) {
|
| + std::string save_string;
|
| + base::SharedMemoryHandle handle;
|
| +
|
| + // Scoping the first FieldTrialList, as we need another one to test that it
|
| + // matches.
|
| + {
|
| + FieldTrialList field_trial_list(nullptr);
|
| + FieldTrialList::CreateFieldTrial("Trial1", "Group1");
|
| + FieldTrialList::InstantiateFieldTrialAllocatorIfNeeded();
|
| + FieldTrialList::AllStatesToString(&save_string);
|
| + handle = base::SharedMemory::DuplicateHandle(
|
| + field_trial_list.field_trial_allocator_->shared_memory()->handle());
|
| + }
|
| +
|
| + FieldTrialList field_trial_list2(nullptr);
|
| + std::unique_ptr<base::SharedMemory> shm(new SharedMemory(handle, true));
|
| + shm.get()->Map(4 << 10); // Hardcoded, equal to kFieldTrialAllocationSize.
|
| + FieldTrialList::CreateTrialsFromSharedMemory(std::move(shm));
|
| + std::string check_string;
|
| + FieldTrialList::AllStatesToString(&check_string);
|
| + EXPECT_EQ(save_string, check_string);
|
| +}
|
| +
|
| } // namespace base
|
|
|