Index: base/metrics/field_trial_unittest.cc |
diff --git a/base/metrics/field_trial_unittest.cc b/base/metrics/field_trial_unittest.cc |
index caa00e814cbf9dcfc3d918bf3b8ea8d20b147a6e..c09ab05c60cb15929df9338d56f38b2a4adf98ee 100644 |
--- a/base/metrics/field_trial_unittest.cc |
+++ b/base/metrics/field_trial_unittest.cc |
@@ -6,14 +6,18 @@ |
#include <stddef.h> |
+#include "base/base_switches.h" |
#include "base/build_time.h" |
+#include "base/feature_list.h" |
#include "base/macros.h" |
+#include "base/memory/ptr_util.h" |
#include "base/message_loop/message_loop.h" |
#include "base/rand_util.h" |
#include "base/run_loop.h" |
#include "base/strings/string_number_conversions.h" |
#include "base/strings/stringprintf.h" |
#include "base/test/gtest_util.h" |
+#include "base/test/mock_entropy_provider.h" |
#include "testing/gtest/include/gtest/gtest.h" |
namespace base { |
@@ -1132,4 +1136,33 @@ TEST(FieldTrialDeathTest, OneTimeRandomizedTrialWithoutFieldTrialList) { |
""); |
} |
+TEST(FieldTrialListTest, TestCopyFieldTrialStateToFlags) { |
+ base::FieldTrialList field_trial_list( |
+ base::MakeUnique<base::MockEntropyProvider>()); |
+ base::FieldTrialList::CreateFieldTrial("Trial1", "Group1"); |
+ base::FilePath test_file_path = base::FilePath(FILE_PATH_LITERAL("Program")); |
+ base::CommandLine cmd_line = base::CommandLine(test_file_path); |
+ |
+ std::unique_ptr<base::FeatureList> feature_list(new base::FeatureList); |
+ feature_list->InitializeFromCommandLine("ShareFieldTrialStateViaSharedMemory", |
+ ""); |
+ base::FeatureList::ClearInstanceForTesting(); |
+ base::FeatureList::SetInstance(std::move(feature_list)); |
+ |
+ std::unique_ptr<base::SharedMemory> field_trial_state = |
+ base::FieldTrialList::CopyFieldTrialStateToFlags("field-trial-handle", |
+ &cmd_line); |
+ |
+#if defined(OS_WIN) |
+ std::string field_trial_state_string( |
+ static_cast<char*>(field_trial_state.get()->memory())); |
Alexei Svitkine (slow)
2016/10/06 21:39:28
Nit: Just inline this into the EXPECT_EQ
lawrencewu
2016/10/07 15:07:21
Done.
|
+ |
+ EXPECT_EQ("Trial1/Group1/", field_trial_state_string); |
+ EXPECT_TRUE(cmd_line.HasSwitch("field-trial-handle")); |
+#else |
+ EXPECT_TRUE(field_trial_state.get() == nullptr); |
+ EXPECT_TRUE(cmd_line.HasSwitch(switches::kForceFieldTrials)); |
+#endif |
+} |
+ |
} // namespace base |