1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "chrome/browser/search/search.h"
7 #include "base/command_line.h"
8 #include "base/memory/scoped_ptr.h"
9 #include "base/metrics/field_trial.h"
10 #include "base/metrics/statistics_recorder.h"
11 #include "chrome/common/chrome_switches.h"
12 #include "components/search/search.h"
13 #include "components/search/search_switches.h"
14 #include "components/variations/entropy_provider.h"
15 #include "testing/gtest/include/gtest/gtest.h"
21 TEST(SearchTest
, QueryExtractionEnabled
) {
22 // Query extraction is always enabled on mobile.
23 EXPECT_TRUE(IsQueryExtractionEnabled());
26 class SearchUtilTest
: public testing::Test
{
28 void SetUp() override
{
29 field_trial_list_
.reset(new base::FieldTrialList(
30 new metrics::SHA1EntropyProvider("42")));
31 base::StatisticsRecorder::Initialize();
35 scoped_ptr
<base::FieldTrialList
> field_trial_list_
;
38 TEST_F(SearchUtilTest
, UseDefaultEmbeddedSearchPageVersion
) {
39 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
40 "EmbeddedSearch", "Group1 espv:-1 query_extraction:1"));
41 EXPECT_TRUE(IsQueryExtractionEnabled());
42 EXPECT_EQ("espv=1&", InstantExtendedEnabledParam(true));
43 EXPECT_EQ("espv=1&", InstantExtendedEnabledParam(false));
46 TEST_F(SearchUtilTest
, ShouldPrefetchSearchResults_InstantExtendedAPIEnabled
) {
47 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
49 "Group1 espv:2 prefetch_results:1"));
50 EXPECT_TRUE(ShouldPrefetchSearchResults());
51 EXPECT_TRUE(IsInstantExtendedAPIEnabled());
52 EXPECT_EQ(2ul, EmbeddedSearchPageVersion());
55 TEST_F(SearchUtilTest
, ShouldPrefetchSearchResults_InstantExtendedAPIDisabled
) {
56 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
58 "Group1 espv:1 prefetch_results:1"));
59 EXPECT_FALSE(ShouldPrefetchSearchResults());
60 EXPECT_FALSE(IsInstantExtendedAPIEnabled());
61 EXPECT_EQ(1ul, EmbeddedSearchPageVersion());
64 TEST_F(SearchUtilTest
, ShouldPrefetchSearchResults_DisabledViaFieldTrials
) {
65 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
67 "Group1 espv:2 prefetch_results:0"));
68 EXPECT_FALSE(ShouldPrefetchSearchResults());
69 EXPECT_EQ(2ul, EmbeddedSearchPageVersion());
72 TEST_F(SearchUtilTest
, ShouldPrefetchSearchResults_EnabledViaCommandLine
) {
73 base::CommandLine::ForCurrentProcess()->AppendSwitch(
74 switches::kPrefetchSearchResults
);
75 // Command-line enable should override Finch.
76 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
77 "EmbeddedSearch", "Group1 espv:2 prefetch_results:0"));
78 EXPECT_TRUE(ShouldPrefetchSearchResults());
79 EXPECT_EQ(2ul, EmbeddedSearchPageVersion());
82 TEST_F(SearchUtilTest
,
83 ShouldReuseInstantSearchBasePage_PrefetchResultsFlagDisabled
) {
84 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
86 "Group1 espv:2 prefetch_results:0 reuse_instant_search_base_page:1"));
87 EXPECT_FALSE(ShouldPrefetchSearchResults());
88 EXPECT_FALSE(ShouldReuseInstantSearchBasePage());
89 EXPECT_EQ(2ul, EmbeddedSearchPageVersion());
92 TEST_F(SearchUtilTest
, ShouldReuseInstantSearchBasePage_EnabledViaFieldTrial
) {
93 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
95 "Group1 espv:2 prefetch_results:1 reuse_instant_search_base_page:1"));
96 EXPECT_TRUE(ShouldReuseInstantSearchBasePage());
97 EXPECT_EQ(2ul, EmbeddedSearchPageVersion());
100 TEST_F(SearchUtilTest
, ShouldReuseInstantSearchBasePage_DisabledViaFieldTrial
) {
101 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
103 "Group1 espv:2 prefetch_results:1 reuse_instant_search_base_page:0"));
104 EXPECT_FALSE(ShouldReuseInstantSearchBasePage());
105 EXPECT_EQ(2ul, EmbeddedSearchPageVersion());
110 } // namespace chrome