Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4994)

Unified Diff: base/metrics/field_trial_unittest.cc

Issue 2365273004: Initial implementation for sharing field trial state (win) (Closed)
Patch Set: add missing include Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698