Index: chrome/browser/prerender/prerender_unittest.cc |
diff --git a/chrome/browser/prerender/prerender_unittest.cc b/chrome/browser/prerender/prerender_unittest.cc |
index 68d6c5bbddbb4f1c7dbcc19977ddbac1ab8352a3..9820d3fb24ac20b97f0f94dcb7301643c1f5c743 100644 |
--- a/chrome/browser/prerender/prerender_unittest.cc |
+++ b/chrome/browser/prerender/prerender_unittest.cc |
@@ -14,7 +14,9 @@ |
#include "base/memory/ptr_util.h" |
#include "base/message_loop/message_loop.h" |
#include "base/metrics/field_trial.h" |
+#include "base/metrics/field_trial_param_associator.h" |
#include "base/strings/stringprintf.h" |
+#include "base/test/scoped_feature_list.h" |
#include "base/test/simple_test_clock.h" |
#include "base/test/simple_test_tick_clock.h" |
#include "base/time/time.h" |
@@ -32,6 +34,7 @@ |
#include "chrome/test/base/testing_profile.h" |
#include "components/content_settings/core/common/pref_names.h" |
#include "components/prefs/pref_service.h" |
+#include "components/variations/variations_associated_data.h" |
#include "content/public/browser/render_view_host.h" |
#include "content/public/test/test_browser_thread.h" |
#include "net/base/network_change_notifier.h" |
@@ -411,12 +414,53 @@ class PrerenderTest : public testing::Test { |
TEST_F(PrerenderTest, PrerenderRespectsDisableFlag) { |
RestorePrerenderMode restore_prerender_mode; |
ASSERT_TRUE(PrerenderManager::IsPrerenderingPossible()); |
- base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); |
- command_line->AppendSwitchASCII( |
- switches::kPrerenderMode, |
- switches::kPrerenderModeSwitchValueDisabled); |
- prerender::ConfigurePrerender(*command_line); |
- ASSERT_FALSE(PrerenderManager::IsPrerenderingPossible()); |
+ ASSERT_EQ(PrerenderManager::PRERENDER_MODE_ENABLED, |
+ PrerenderManager::GetMode()); |
+ |
+ { |
+ base::test::ScopedFeatureList scoped_feature_list; |
+ scoped_feature_list.InitAndDisableFeature(kNoStatePrefetchFeature); |
+ prerender::ConfigurePrerender(); |
+ EXPECT_EQ(PrerenderManager::PRERENDER_MODE_DISABLED, |
+ PrerenderManager::GetMode()); |
+ EXPECT_FALSE(PrerenderManager::IsPrerenderingPossible()); |
+ } |
+} |
+ |
+TEST_F(PrerenderTest, PrerenderRespectsFieldTrialParameters) { |
+ RestorePrerenderMode restore_prerender_mode; |
+ |
+ // Set up the prerender mode through a field trial. |
+ std::string kTrialName = "name"; |
+ std::string kTrialGroup = "group"; |
+ base::FieldTrial* trial = |
+ base::FieldTrialList::CreateFieldTrial(kTrialName, kTrialGroup); |
+ std::map<std::string, std::string> params = { |
+ {kNoStatePrefetchFeatureModeParameterName, |
+ kNoStatePrefetchFeatureModeParameterSimpleLoad}}; |
+ ASSERT_TRUE( |
+ variations::AssociateVariationParams(kTrialName, kTrialGroup, params)); |
+ |
+ std::unique_ptr<base::FeatureList> feature_list = |
+ base::MakeUnique<base::FeatureList>(); |
+ feature_list->RegisterFieldTrialOverride( |
+ kNoStatePrefetchFeature.name, base::FeatureList::OVERRIDE_ENABLE_FEATURE, |
+ trial); |
+ |
+ base::test::ScopedFeatureList scoped_feature_list; |
+ scoped_feature_list.InitWithFeatureList(std::move(feature_list)); |
+ |
+ EXPECT_EQ(base::FeatureList::GetFieldTrial(kNoStatePrefetchFeature), trial); |
+ |
+ std::map<std::string, std::string> actual_params; |
+ EXPECT_TRUE(variations::GetVariationParamsByFeature(kNoStatePrefetchFeature, |
+ &actual_params)); |
+ EXPECT_EQ(params, actual_params); |
+ |
+ prerender::ConfigurePrerender(); |
+ EXPECT_TRUE(PrerenderManager::IsPrerenderingPossible()); |
+ EXPECT_EQ(PrerenderManager::PRERENDER_MODE_SIMPLE_LOAD_EXPERIMENT, |
+ PrerenderManager::GetMode()); |
} |
TEST_F(PrerenderTest, PrerenderRespectsThirdPartyCookiesPref) { |