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

Side by Side Diff: chrome/browser/search/search_unittest.cc

Issue 24733003: Update defaults for InstantExtended. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: More test fixes. Created 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/command_line.h" 5 #include "base/command_line.h"
6 #include "base/metrics/field_trial.h" 6 #include "base/metrics/field_trial.h"
7 #include "base/metrics/histogram_base.h"
8 #include "base/metrics/histogram_samples.h"
9 #include "base/metrics/statistics_recorder.h" 7 #include "base/metrics/statistics_recorder.h"
10 #include "base/prefs/pref_service.h" 8 #include "base/prefs/pref_service.h"
11 #include "chrome/browser/search/instant_service.h" 9 #include "chrome/browser/search/instant_service.h"
12 #include "chrome/browser/search/instant_service_factory.h" 10 #include "chrome/browser/search/instant_service_factory.h"
13 #include "chrome/browser/search/search.h" 11 #include "chrome/browser/search/search.h"
14 #include "chrome/browser/search_engines/search_terms_data.h" 12 #include "chrome/browser/search_engines/search_terms_data.h"
15 #include "chrome/browser/search_engines/template_url_service.h" 13 #include "chrome/browser/search_engines/template_url_service.h"
16 #include "chrome/browser/search_engines/template_url_service_factory.h" 14 #include "chrome/browser/search_engines/template_url_service_factory.h"
17 #include "chrome/browser/ui/tabs/tab_strip_model.h" 15 #include "chrome/browser/ui/tabs/tab_strip_model.h"
18 #include "chrome/common/chrome_switches.h" 16 #include "chrome/common/chrome_switches.h"
19 #include "chrome/common/pref_names.h" 17 #include "chrome/common/pref_names.h"
20 #include "chrome/common/url_constants.h" 18 #include "chrome/common/url_constants.h"
21 #include "chrome/test/base/browser_with_test_window_test.h" 19 #include "chrome/test/base/browser_with_test_window_test.h"
22 #include "chrome/test/base/ui_test_utils.h" 20 #include "chrome/test/base/ui_test_utils.h"
23 #include "components/variations/entropy_provider.h" 21 #include "components/variations/entropy_provider.h"
24 #include "content/public/browser/render_process_host.h" 22 #include "content/public/browser/render_process_host.h"
25 #include "content/public/browser/render_view_host.h" 23 #include "content/public/browser/render_view_host.h"
26 #include "content/public/browser/site_instance.h" 24 #include "content/public/browser/site_instance.h"
27 #include "content/public/browser/web_contents.h" 25 #include "content/public/browser/web_contents.h"
28 #include "content/public/common/renderer_preferences.h" 26 #include "content/public/common/renderer_preferences.h"
29 27
30 namespace chrome { 28 namespace chrome {
31 29
32 class EmbeddedSearchFieldTrialTest : public testing::Test { 30 class EmbeddedSearchFieldTrialTest : public testing::Test {
33 protected: 31 protected:
34 virtual void SetUp() { 32 virtual void SetUp() {
35 field_trial_list_.reset(new base::FieldTrialList( 33 field_trial_list_.reset(new base::FieldTrialList(
36 new metrics::SHA1EntropyProvider("42"))); 34 new metrics::SHA1EntropyProvider("42")));
37 base::StatisticsRecorder::Initialize(); 35 base::StatisticsRecorder::Initialize();
38 ResetInstantExtendedOptInStateGateForTest();
39 } 36 }
40 37
41 private: 38 private:
42 scoped_ptr<base::FieldTrialList> field_trial_list_; 39 scoped_ptr<base::FieldTrialList> field_trial_list_;
43 }; 40 };
44 41
45 TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoEmptyAndValid) { 42 TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoEmptyAndValid) {
46 FieldTrialFlags flags; 43 FieldTrialFlags flags;
47 uint64 group_number = 0;
48 44
49 EXPECT_TRUE(GetFieldTrialInfo(&flags, &group_number)); 45 EXPECT_TRUE(GetFieldTrialInfo(&flags));
50 EXPECT_EQ(0ul, group_number);
51 EXPECT_EQ(0ul, flags.size()); 46 EXPECT_EQ(0ul, flags.size());
52 47
53 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 48 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
54 "InstantExtended", "Group77")); 49 "InstantExtended", "Group77"));
55 EXPECT_TRUE(GetFieldTrialInfo(&flags, &group_number)); 50 EXPECT_TRUE(GetFieldTrialInfo(&flags));
56 EXPECT_EQ(77ul, group_number);
57 EXPECT_EQ(0ul, flags.size()); 51 EXPECT_EQ(0ul, flags.size());
58 } 52 }
59 53
60 TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoInvalidNumber) { 54 TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoInvalidNumber) {
61 FieldTrialFlags flags; 55 FieldTrialFlags flags;
62 uint64 group_number = 0;
63 56
64 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 57 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
65 "InstantExtended", "Group77.2")); 58 "InstantExtended", "Group77.2"));
66 EXPECT_FALSE(GetFieldTrialInfo(&flags, &group_number)); 59 EXPECT_TRUE(GetFieldTrialInfo(&flags));
67 EXPECT_EQ(0ul, group_number);
68 EXPECT_EQ(0ul, flags.size()); 60 EXPECT_EQ(0ul, flags.size());
69 } 61 }
70 62
71 TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoInvalidName) { 63 TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoInvalidName) {
72 FieldTrialFlags flags; 64 FieldTrialFlags flags;
73 uint64 group_number = 0;
74 65
75 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 66 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
76 "InstantExtended", "Invalid77")); 67 "InstantExtended", "Invalid77"));
77 EXPECT_TRUE(GetFieldTrialInfo(&flags, &group_number)); 68 EXPECT_TRUE(GetFieldTrialInfo(&flags));
78 EXPECT_EQ(0ul, group_number);
79 EXPECT_EQ(0ul, flags.size()); 69 EXPECT_EQ(0ul, flags.size());
80 } 70 }
81 71
82 TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoValidGroup) { 72 TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoValidGroup) {
83 FieldTrialFlags flags; 73 FieldTrialFlags flags;
84 uint64 group_number = 0;
85 74
86 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 75 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
87 "InstantExtended", "Group77")); 76 "InstantExtended", "Group77"));
88 EXPECT_TRUE(GetFieldTrialInfo(&flags, &group_number)); 77 EXPECT_TRUE(GetFieldTrialInfo(&flags));
89 EXPECT_EQ(77ul, group_number);
90 EXPECT_EQ(0ul, flags.size()); 78 EXPECT_EQ(0ul, flags.size());
91 } 79 }
92 80
93 TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoValidFlag) { 81 TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoValidFlag) {
94 FieldTrialFlags flags; 82 FieldTrialFlags flags;
95 uint64 group_number = 0;
96 83
97 EXPECT_EQ(9999ul, GetUInt64ValueForFlagWithDefault("foo", 9999, flags)); 84 EXPECT_EQ(9999ul, GetUInt64ValueForFlagWithDefault("foo", 9999, flags));
98 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 85 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
99 "InstantExtended", "Group77 foo:6")); 86 "InstantExtended", "Group77 foo:6"));
100 EXPECT_TRUE(GetFieldTrialInfo(&flags, &group_number)); 87 EXPECT_TRUE(GetFieldTrialInfo(&flags));
101 EXPECT_EQ(77ul, group_number);
102 EXPECT_EQ(1ul, flags.size()); 88 EXPECT_EQ(1ul, flags.size());
103 EXPECT_EQ(6ul, GetUInt64ValueForFlagWithDefault("foo", 9999, flags)); 89 EXPECT_EQ(6ul, GetUInt64ValueForFlagWithDefault("foo", 9999, flags));
104 } 90 }
105 91
106 TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoNewName) { 92 TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoNewName) {
107 FieldTrialFlags flags; 93 FieldTrialFlags flags;
108 uint64 group_number = 0;
109 94
110 EXPECT_EQ(9999ul, GetUInt64ValueForFlagWithDefault("foo", 9999, flags)); 95 EXPECT_EQ(9999ul, GetUInt64ValueForFlagWithDefault("foo", 9999, flags));
111 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 96 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
112 "EmbeddedSearch", "Group77 foo:6")); 97 "EmbeddedSearch", "Group77 foo:6"));
113 EXPECT_TRUE(GetFieldTrialInfo(&flags, &group_number)); 98 EXPECT_TRUE(GetFieldTrialInfo(&flags));
114 EXPECT_EQ(77ul, group_number);
115 EXPECT_EQ(1ul, flags.size()); 99 EXPECT_EQ(1ul, flags.size());
116 EXPECT_EQ(6ul, GetUInt64ValueForFlagWithDefault("foo", 9999, flags)); 100 EXPECT_EQ(6ul, GetUInt64ValueForFlagWithDefault("foo", 9999, flags));
117 } 101 }
118 102
119 TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoNewNameOverridesOld) { 103 TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoNewNameOverridesOld) {
120 FieldTrialFlags flags; 104 FieldTrialFlags flags;
121 uint64 group_number = 0;
122 105
123 EXPECT_EQ(9999ul, GetUInt64ValueForFlagWithDefault("foo", 9999, flags)); 106 EXPECT_EQ(9999ul, GetUInt64ValueForFlagWithDefault("foo", 9999, flags));
124 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 107 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
125 "EmbeddedSearch", "Group77 foo:6")); 108 "EmbeddedSearch", "Group77 foo:6"));
126 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 109 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
127 "InstantExtended", "Group78 foo:5")); 110 "InstantExtended", "Group78 foo:5"));
128 EXPECT_TRUE(GetFieldTrialInfo(&flags, &group_number)); 111 EXPECT_TRUE(GetFieldTrialInfo(&flags));
129 EXPECT_EQ(77ul, group_number);
130 EXPECT_EQ(1ul, flags.size()); 112 EXPECT_EQ(1ul, flags.size());
131 EXPECT_EQ(6ul, GetUInt64ValueForFlagWithDefault("foo", 9999, flags)); 113 EXPECT_EQ(6ul, GetUInt64ValueForFlagWithDefault("foo", 9999, flags));
132 } 114 }
133 115
134 TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoLotsOfFlags) { 116 TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoLotsOfFlags) {
135 FieldTrialFlags flags; 117 FieldTrialFlags flags;
136 uint64 group_number = 0;
137 118
138 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 119 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
139 "InstantExtended", "Group77 bar:1 baz:7 cat:dogs")); 120 "InstantExtended", "Group77 bar:1 baz:7 cat:dogs"));
140 EXPECT_TRUE(GetFieldTrialInfo(&flags, &group_number)); 121 EXPECT_TRUE(GetFieldTrialInfo(&flags));
141 EXPECT_EQ(77ul, group_number);
142 EXPECT_EQ(3ul, flags.size()); 122 EXPECT_EQ(3ul, flags.size());
143 EXPECT_EQ(true, GetBoolValueForFlagWithDefault("bar", false, flags)); 123 EXPECT_EQ(true, GetBoolValueForFlagWithDefault("bar", false, flags));
144 EXPECT_EQ(7ul, GetUInt64ValueForFlagWithDefault("baz", 0, flags)); 124 EXPECT_EQ(7ul, GetUInt64ValueForFlagWithDefault("baz", 0, flags));
145 EXPECT_EQ("dogs", 125 EXPECT_EQ("dogs",
146 GetStringValueForFlagWithDefault("cat", std::string(), flags)); 126 GetStringValueForFlagWithDefault("cat", std::string(), flags));
147 EXPECT_EQ("default", 127 EXPECT_EQ("default",
148 GetStringValueForFlagWithDefault("moose", "default", flags)); 128 GetStringValueForFlagWithDefault("moose", "default", flags));
149 } 129 }
150 130
151 TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoDisabled) { 131 TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoDisabled) {
152 FieldTrialFlags flags; 132 FieldTrialFlags flags;
153 uint64 group_number = 0;
154 133
155 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 134 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
156 "InstantExtended", "Group77 bar:1 baz:7 cat:dogs DISABLED")); 135 "InstantExtended", "Group77 bar:1 baz:7 cat:dogs DISABLED"));
157 EXPECT_FALSE(GetFieldTrialInfo(&flags, &group_number)); 136 EXPECT_FALSE(GetFieldTrialInfo(&flags));
158 EXPECT_EQ(0ul, group_number);
159 EXPECT_EQ(0ul, flags.size()); 137 EXPECT_EQ(0ul, flags.size());
160 } 138 }
161 139
162 TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoControlFlags) { 140 TEST_F(EmbeddedSearchFieldTrialTest, GetFieldTrialInfoControlFlags) {
163 FieldTrialFlags flags; 141 FieldTrialFlags flags;
164 uint64 group_number = 0;
165 142
166 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 143 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
167 "InstantExtended", "Control77 bar:1 baz:7 cat:dogs")); 144 "InstantExtended", "Control77 bar:1 baz:7 cat:dogs"));
168 EXPECT_TRUE(GetFieldTrialInfo(&flags, &group_number)); 145 EXPECT_TRUE(GetFieldTrialInfo(&flags));
169 EXPECT_EQ(0ul, group_number);
170 EXPECT_EQ(3ul, flags.size()); 146 EXPECT_EQ(3ul, flags.size());
171 } 147 }
172 148
173 class InstantExtendedAPIEnabledTest : public testing::Test { 149 class InstantExtendedAPIEnabledTest : public testing::Test {
174 public:
175 InstantExtendedAPIEnabledTest() : histogram_(NULL) {
176 }
177 protected: 150 protected:
178 virtual void SetUp() { 151 virtual void SetUp() {
179 field_trial_list_.reset(new base::FieldTrialList( 152 field_trial_list_.reset(new base::FieldTrialList(
180 new metrics::SHA1EntropyProvider("42"))); 153 new metrics::SHA1EntropyProvider("42")));
181 base::StatisticsRecorder::Initialize();
182 ResetInstantExtendedOptInStateGateForTest();
183 previous_metrics_count_.resize(INSTANT_EXTENDED_OPT_IN_STATE_ENUM_COUNT, 0);
184 base::HistogramBase* histogram = GetHistogram();
185 if (histogram) {
186 scoped_ptr<base::HistogramSamples> samples(histogram->SnapshotSamples());
187 if (samples.get()) {
188 for (int state = INSTANT_EXTENDED_NOT_SET;
189 state < INSTANT_EXTENDED_OPT_IN_STATE_ENUM_COUNT; ++state) {
190 previous_metrics_count_[state] = samples->GetCount(state);
191 }
192 }
193 }
194 } 154 }
195 155
196 virtual CommandLine* GetCommandLine() const { 156 virtual CommandLine* GetCommandLine() const {
197 return CommandLine::ForCurrentProcess(); 157 return CommandLine::ForCurrentProcess();
198 } 158 }
199 159
200 void ValidateMetrics(base::HistogramBase::Sample value) {
201 base::HistogramBase* histogram = GetHistogram();
202 if (histogram) {
203 scoped_ptr<base::HistogramSamples> samples(histogram->SnapshotSamples());
204 if (samples.get()) {
205 for (int state = INSTANT_EXTENDED_NOT_SET;
206 state < INSTANT_EXTENDED_OPT_IN_STATE_ENUM_COUNT; ++state) {
207 if (state == value) {
208 EXPECT_EQ(previous_metrics_count_[state] + 1,
209 samples->GetCount(state));
210 } else {
211 EXPECT_EQ(previous_metrics_count_[state], samples->GetCount(state));
212 }
213 }
214 }
215 }
216 }
217
218 private: 160 private:
219 base::HistogramBase* GetHistogram() {
220 if (!histogram_) {
221 histogram_ = base::StatisticsRecorder::FindHistogram(
222 "InstantExtended.OptInState");
223 }
224 return histogram_;
225 }
226 base::HistogramBase* histogram_;
227 scoped_ptr<base::FieldTrialList> field_trial_list_; 161 scoped_ptr<base::FieldTrialList> field_trial_list_;
228 std::vector<int> previous_metrics_count_;
229 }; 162 };
230 163
231 TEST_F(InstantExtendedAPIEnabledTest, EnabledViaCommandLineFlag) {
232 GetCommandLine()->AppendSwitch(switches::kEnableInstantExtendedAPI);
233 EXPECT_TRUE(IsInstantExtendedAPIEnabled());
234 #if defined(OS_IOS) || defined(OS_ANDROID)
235 EXPECT_EQ(1ul, EmbeddedSearchPageVersion());
236 #else
237 EXPECT_EQ(2ul, EmbeddedSearchPageVersion());
238 #endif
239 ValidateMetrics(INSTANT_EXTENDED_OPT_IN);
240 }
241
242 TEST_F(InstantExtendedAPIEnabledTest, EnabledViaFinchFlag) { 164 TEST_F(InstantExtendedAPIEnabledTest, EnabledViaFinchFlag) {
243 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("InstantExtended", 165 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("InstantExtended",
244 "Group1 espv:42")); 166 "Group1 espv:42"));
245 EXPECT_TRUE(IsInstantExtendedAPIEnabled()); 167 EXPECT_TRUE(IsInstantExtendedAPIEnabled());
246 EXPECT_EQ(42ul, EmbeddedSearchPageVersion()); 168 EXPECT_EQ(42ul, EmbeddedSearchPageVersion());
247 ValidateMetrics(INSTANT_EXTENDED_NOT_SET);
248 } 169 }
249 170
250 TEST_F(InstantExtendedAPIEnabledTest, DisabledViaCommandLineFlag) { 171 TEST_F(InstantExtendedAPIEnabledTest, DisabledViaFinchFlag) {
251 GetCommandLine()->AppendSwitch(switches::kDisableInstantExtendedAPI);
252 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("InstantExtended", 172 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("InstantExtended",
253 "Group1 espv:2")); 173 "Group1 espv:0"));
254 EXPECT_FALSE(IsInstantExtendedAPIEnabled()); 174 EXPECT_FALSE(IsInstantExtendedAPIEnabled());
255 EXPECT_EQ(0ul, EmbeddedSearchPageVersion()); 175 EXPECT_EQ(0ul, EmbeddedSearchPageVersion());
256 ValidateMetrics(INSTANT_EXTENDED_OPT_OUT);
257 } 176 }
258 177
259 typedef InstantExtendedAPIEnabledTest ShouldHideTopVerbatimTest; 178 typedef InstantExtendedAPIEnabledTest ShouldHideTopVerbatimTest;
260 179
261 TEST_F(ShouldHideTopVerbatimTest, DoNotHideByDefault) { 180 TEST_F(ShouldHideTopVerbatimTest, DoNotHideByDefault) {
262 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 181 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
263 "InstantExtended", "Control")); 182 "InstantExtended", "Control"));
264 EXPECT_FALSE(ShouldHideTopVerbatimMatch()); 183 EXPECT_FALSE(ShouldHideTopVerbatimMatch());
265 } 184 }
266 185
(...skipping 14 matching lines...) Expand all
281 "InstantExtended", "Controll1 hide_verbatim:1")); 200 "InstantExtended", "Controll1 hide_verbatim:1"));
282 EXPECT_TRUE(ShouldHideTopVerbatimMatch()); 201 EXPECT_TRUE(ShouldHideTopVerbatimMatch());
283 } 202 }
284 203
285 TEST_F(ShouldHideTopVerbatimTest, DisableByFlag) { 204 TEST_F(ShouldHideTopVerbatimTest, DisableByFlag) {
286 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 205 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
287 "InstantExtended", "Group1 hide_verbatim:0")); 206 "InstantExtended", "Group1 hide_verbatim:0"));
288 EXPECT_FALSE(ShouldHideTopVerbatimMatch()); 207 EXPECT_FALSE(ShouldHideTopVerbatimMatch());
289 } 208 }
290 209
291 typedef InstantExtendedAPIEnabledTest ShouldSuppressInstantExtendedOnSRPTest; 210 typedef InstantExtendedAPIEnabledTest IsQueryExtractionEnabledTest;
292 211
293 TEST_F(ShouldSuppressInstantExtendedOnSRPTest, NotSet) { 212 TEST_F(IsQueryExtractionEnabledTest, NotSet) {
294 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 213 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
295 "InstantExtended", "Group1 espv:2")); 214 "InstantExtended", "Group1 espv:2"));
296 EXPECT_FALSE(ShouldSuppressInstantExtendedOnSRP()); 215 EXPECT_TRUE(IsInstantExtendedAPIEnabled());
216 EXPECT_FALSE(IsQueryExtractionEnabled());
217 EXPECT_EQ(2ul, EmbeddedSearchPageVersion());
218 }
219
220 TEST_F(IsQueryExtractionEnabledTest, QueryExtractionEnabledViaFinch) {
221 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
222 "InstantExtended", "Group1 espv:2 query_extraction:1"));
297 EXPECT_TRUE(IsInstantExtendedAPIEnabled()); 223 EXPECT_TRUE(IsInstantExtendedAPIEnabled());
298 EXPECT_TRUE(IsQueryExtractionEnabled()); 224 EXPECT_TRUE(IsQueryExtractionEnabled());
299 EXPECT_EQ(2ul, EmbeddedSearchPageVersion()); 225 EXPECT_EQ(2ul, EmbeddedSearchPageVersion());
300 } 226 }
301 227
302 TEST_F(ShouldSuppressInstantExtendedOnSRPTest, NotSuppressOnSRP) { 228 TEST_F(IsQueryExtractionEnabledTest, QueryExtractionEnabledViaCommandLine) {
303 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 229 EnableQueryExtractionForTesting();
304 "InstantExtended", "Group1 espv:2 suppress_on_srp:0"));
305 EXPECT_FALSE(ShouldSuppressInstantExtendedOnSRP());
306 EXPECT_TRUE(IsInstantExtendedAPIEnabled()); 230 EXPECT_TRUE(IsInstantExtendedAPIEnabled());
307 EXPECT_TRUE(IsQueryExtractionEnabled()); 231 EXPECT_TRUE(IsQueryExtractionEnabled());
308 EXPECT_EQ(2ul, EmbeddedSearchPageVersion()); 232 EXPECT_EQ(2ul, EmbeddedSearchPageVersion());
309 } 233 }
310 234
311 TEST_F(ShouldSuppressInstantExtendedOnSRPTest, SuppressOnSRP) { 235 TEST_F(IsQueryExtractionEnabledTest, QueryExtractionDisabledViaFinch) {
312 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 236 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
313 "InstantExtended", "Group1 espv:2 suppress_on_srp:1")); 237 "InstantExtended", "Group1 espv:2 query_extraction:0"));
314 EXPECT_TRUE(ShouldSuppressInstantExtendedOnSRP());
315 EXPECT_TRUE(IsInstantExtendedAPIEnabled()); 238 EXPECT_TRUE(IsInstantExtendedAPIEnabled());
316 EXPECT_FALSE(IsQueryExtractionEnabled()); 239 EXPECT_FALSE(IsQueryExtractionEnabled());
317 EXPECT_EQ(2ul, EmbeddedSearchPageVersion()); 240 EXPECT_EQ(2ul, EmbeddedSearchPageVersion());
318 } 241 }
319 242
320 class SearchTest : public BrowserWithTestWindowTest { 243 class SearchTest : public BrowserWithTestWindowTest {
321 protected: 244 protected:
322 virtual void SetUp() OVERRIDE { 245 virtual void SetUp() OVERRIDE {
323 BrowserWithTestWindowTest::SetUp(); 246 BrowserWithTestWindowTest::SetUp();
324 field_trial_list_.reset(new base::FieldTrialList( 247 field_trial_list_.reset(new base::FieldTrialList(
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
381 304
382 scoped_ptr<base::FieldTrialList> field_trial_list_; 305 scoped_ptr<base::FieldTrialList> field_trial_list_;
383 }; 306 };
384 307
385 struct SearchTestCase { 308 struct SearchTestCase {
386 const char* url; 309 const char* url;
387 bool expected_result; 310 bool expected_result;
388 const char* comment; 311 const char* comment;
389 }; 312 };
390 313
391 TEST_F(SearchTest, ShouldAssignURLToInstantRendererExtendedDisabled) { 314 TEST_F(SearchTest, ShouldAssignURLToInstantRendererSRPEnabled) {
392 DisableInstantExtendedAPIForTesting(); 315 EnableQueryExtractionForTesting();
393
394 const SearchTestCase kTestCases[] = {
395 {"chrome-search://foo/bar", false, ""},
396 {"http://foo.com/instant", false, ""},
397 {"http://foo.com/instant?foo=bar", false, ""},
398 {"https://foo.com/instant", false, ""},
399 {"https://foo.com/instant#foo=bar", false, ""},
400 {"HtTpS://fOo.CoM/instant", false, ""},
401 {"http://foo.com:80/instant", false, ""},
402 {"invalid URL", false, "Invalid URL"},
403 {"unknown://scheme/path", false, "Unknown scheme"},
404 {"ftp://foo.com/instant", false, "Non-HTTP scheme"},
405 {"http://sub.foo.com/instant", false, "Non-exact host"},
406 {"http://foo.com:26/instant", false, "Non-default port"},
407 {"http://foo.com/instant/bar", false, "Non-exact path"},
408 {"http://foo.com/Instant", false, "Case sensitive path"},
409 {"http://foo.com/", false, "Non-exact path"},
410 {"https://foo.com/", false, "Non-exact path"},
411 {"https://foo.com/url?strk", false, "Non-extended mode"},
412 {"https://foo.com/alt?strk", false, "Non-extended mode"},
413 };
414
415 for (size_t i = 0; i < arraysize(kTestCases); ++i) {
416 const SearchTestCase& test = kTestCases[i];
417 EXPECT_EQ(test.expected_result,
418 ShouldAssignURLToInstantRenderer(GURL(test.url), profile()))
419 << test.url << " " << test.comment;
420 }
421 }
422
423 TEST_F(SearchTest, ShouldAssignURLToInstantRendererExtendedEnabled) {
424 EnableInstantExtendedAPIForTesting();
425 316
426 const SearchTestCase kTestCases[] = { 317 const SearchTestCase kTestCases[] = {
427 {chrome::kChromeSearchLocalNtpUrl, true, ""}, 318 {chrome::kChromeSearchLocalNtpUrl, true, ""},
428 {"https://foo.com/instant?strk", true, ""}, 319 {"https://foo.com/instant?strk", true, ""},
429 {"https://foo.com/instant#strk", true, ""}, 320 {"https://foo.com/instant#strk", true, ""},
430 {"https://foo.com/instant?strk=0", true, ""}, 321 {"https://foo.com/instant?strk=0", true, ""},
431 {"https://foo.com/url?strk", true, ""}, 322 {"https://foo.com/url?strk", true, ""},
432 {"https://foo.com/alt?strk", true, ""}, 323 {"https://foo.com/alt?strk", true, ""},
433 {"http://foo.com/instant", false, "Non-HTTPS"}, 324 {"http://foo.com/instant", false, "Non-HTTPS"},
434 {"http://foo.com/instant?strk", false, "Non-HTTPS"}, 325 {"http://foo.com/instant?strk", false, "Non-HTTPS"},
435 {"http://foo.com/instant?strk=1", false, "Non-HTTPS"}, 326 {"http://foo.com/instant?strk=1", false, "Non-HTTPS"},
436 {"https://foo.com/instant", false, "No search terms replacement"}, 327 {"https://foo.com/instant", false, "No search terms replacement"},
437 {"https://foo.com/?strk", false, "Non-exact path"}, 328 {"https://foo.com/?strk", false, "Non-exact path"},
438 }; 329 };
439 330
440 for (size_t i = 0; i < arraysize(kTestCases); ++i) { 331 for (size_t i = 0; i < arraysize(kTestCases); ++i) {
441 const SearchTestCase& test = kTestCases[i]; 332 const SearchTestCase& test = kTestCases[i];
442 EXPECT_EQ(test.expected_result, 333 EXPECT_EQ(test.expected_result,
443 ShouldAssignURLToInstantRenderer(GURL(test.url), profile())) 334 ShouldAssignURLToInstantRenderer(GURL(test.url), profile()))
444 << test.url << " " << test.comment; 335 << test.url << " " << test.comment;
445 } 336 }
446 } 337 }
447 338
448 TEST_F(SearchTest, ShouldAssignURLToInstantRendererExtendedEnabledNotOnSRP) { 339 TEST_F(SearchTest, ShouldAssignURLToInstantRenderer) {
449 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
450 "InstantExtended", "Group1 espv:2 suppress_on_srp:1"));
451
452 const SearchTestCase kTestCases[] = { 340 const SearchTestCase kTestCases[] = {
453 {chrome::kChromeSearchLocalNtpUrl, true, ""}, 341 {chrome::kChromeSearchLocalNtpUrl, true, ""},
454 {"https://foo.com/instant?strk", true, ""}, 342 {"https://foo.com/instant?strk", true, ""},
455 {"https://foo.com/instant#strk", true, ""}, 343 {"https://foo.com/instant#strk", true, ""},
456 {"https://foo.com/instant?strk=0", true, ""}, 344 {"https://foo.com/instant?strk=0", true, ""},
457 {"https://foo.com/url?strk", false, "Disabled on SRP"}, 345 {"https://foo.com/url?strk", false, "Disabled on SRP"},
458 {"https://foo.com/alt?strk", false, "Disabled ON SRP"}, 346 {"https://foo.com/alt?strk", false, "Disabled ON SRP"},
459 {"http://foo.com/instant", false, "Non-HTTPS"}, 347 {"http://foo.com/instant", false, "Non-HTTPS"},
460 {"http://foo.com/instant?strk", false, "Non-HTTPS"}, 348 {"http://foo.com/instant?strk", false, "Non-HTTPS"},
461 {"http://foo.com/instant?strk=1", false, "Non-HTTPS"}, 349 {"http://foo.com/instant?strk=1", false, "Non-HTTPS"},
462 {"https://foo.com/instant", false, "No search terms replacement"}, 350 {"https://foo.com/instant", false, "No search terms replacement"},
463 {"https://foo.com/?strk", false, "Non-exact path"}, 351 {"https://foo.com/?strk", false, "Non-exact path"},
464 }; 352 };
465 353
466 for (size_t i = 0; i < arraysize(kTestCases); ++i) { 354 for (size_t i = 0; i < arraysize(kTestCases); ++i) {
467 const SearchTestCase& test = kTestCases[i]; 355 const SearchTestCase& test = kTestCases[i];
468 EXPECT_EQ(test.expected_result, 356 EXPECT_EQ(test.expected_result,
469 ShouldAssignURLToInstantRenderer(GURL(test.url), profile())) 357 ShouldAssignURLToInstantRenderer(GURL(test.url), profile()))
470 << test.url << " " << test.comment; 358 << test.url << " " << test.comment;
471 } 359 }
472 } 360 }
473 361
474 TEST_F(SearchTest, ShouldUseProcessPerSiteForInstantURL) { 362 TEST_F(SearchTest, ShouldUseProcessPerSiteForInstantURL) {
475 EnableInstantExtendedAPIForTesting();
476
477 const SearchTestCase kTestCases[] = { 363 const SearchTestCase kTestCases[] = {
478 {"chrome-search://local-ntp", true, "Local NTP"}, 364 {"chrome-search://local-ntp", true, "Local NTP"},
479 {"chrome-search://online-ntp", true, "Online NTP"}, 365 {"chrome-search://online-ntp", true, "Online NTP"},
480 {"invalid-scheme://local-ntp", false, "Invalid Local NTP URL"}, 366 {"invalid-scheme://local-ntp", false, "Invalid Local NTP URL"},
481 {"invalid-scheme://online-ntp", false, "Invalid Online NTP URL"}, 367 {"invalid-scheme://online-ntp", false, "Invalid Online NTP URL"},
482 {"chrome-search://foo.com", false, "Search result page"}, 368 {"chrome-search://foo.com", false, "Search result page"},
483 {"https://foo.com/instant?strk", false, ""}, 369 {"https://foo.com/instant?strk", false, ""},
484 {"https://foo.com/instant#strk", false, ""}, 370 {"https://foo.com/instant#strk", false, ""},
485 {"https://foo.com/instant?strk=0", false, ""}, 371 {"https://foo.com/instant?strk=0", false, ""},
486 {"https://foo.com/url?strk", false, ""}, 372 {"https://foo.com/url?strk", false, ""},
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
529 "https://foo.com/url?strk", true, true }, 415 "https://foo.com/url?strk", true, true },
530 {"SRP -> Regular", 416 {"SRP -> Regular",
531 "https://foo.com/url?strk", true, 417 "https://foo.com/url?strk", true,
532 "https://foo.com/other", false, false }, 418 "https://foo.com/other", false, false },
533 {"Regular -> SRP", 419 {"Regular -> SRP",
534 "https://foo.com/other", false, 420 "https://foo.com/other", false,
535 "https://foo.com/url?strk", true, false }, 421 "https://foo.com/url?strk", true, false },
536 }; 422 };
537 423
538 TEST_F(SearchTest, ProcessIsolation) { 424 TEST_F(SearchTest, ProcessIsolation) {
539 EnableInstantExtendedAPIForTesting(); 425 EnableQueryExtractionForTesting();
540 426
541 for (size_t i = 0; i < arraysize(kProcessIsolationTestCases); ++i) { 427 for (size_t i = 0; i < arraysize(kProcessIsolationTestCases); ++i) {
542 const ProcessIsolationTestCase& test = kProcessIsolationTestCases[i]; 428 const ProcessIsolationTestCase& test = kProcessIsolationTestCases[i];
543 AddTab(browser(), GURL("chrome://blank")); 429 AddTab(browser(), GURL("chrome://blank"));
544 const content::WebContents* contents = 430 const content::WebContents* contents =
545 browser()->tab_strip_model()->GetActiveWebContents(); 431 browser()->tab_strip_model()->GetActiveWebContents();
546 432
547 // Navigate to start URL. 433 // Navigate to start URL.
548 NavigateAndCommitActiveTab(GURL(test.start_url)); 434 NavigateAndCommitActiveTab(GURL(test.start_url));
549 EXPECT_EQ(test.start_in_instant_process, InInstantProcess(contents)) 435 EXPECT_EQ(test.start_in_instant_process, InInstantProcess(contents))
(...skipping 18 matching lines...) Expand all
568 EXPECT_EQ(test.same_site_instance, 454 EXPECT_EQ(test.same_site_instance,
569 start_rvh == contents->GetRenderViewHost()) 455 start_rvh == contents->GetRenderViewHost())
570 << test.description; 456 << test.description;
571 EXPECT_EQ(test.same_site_instance, 457 EXPECT_EQ(test.same_site_instance,
572 start_rph == contents->GetRenderProcessHost()) 458 start_rph == contents->GetRenderProcessHost())
573 << test.description; 459 << test.description;
574 } 460 }
575 } 461 }
576 462
577 TEST_F(SearchTest, ProcessIsolation_RendererInitiated) { 463 TEST_F(SearchTest, ProcessIsolation_RendererInitiated) {
578 EnableInstantExtendedAPIForTesting(); 464 EnableQueryExtractionForTesting();
579 465
580 for (size_t i = 0; i < arraysize(kProcessIsolationTestCases); ++i) { 466 for (size_t i = 0; i < arraysize(kProcessIsolationTestCases); ++i) {
581 const ProcessIsolationTestCase& test = kProcessIsolationTestCases[i]; 467 const ProcessIsolationTestCase& test = kProcessIsolationTestCases[i];
582 AddTab(browser(), GURL("chrome://blank")); 468 AddTab(browser(), GURL("chrome://blank"));
583 content::WebContents* contents = 469 content::WebContents* contents =
584 browser()->tab_strip_model()->GetActiveWebContents(); 470 browser()->tab_strip_model()->GetActiveWebContents();
585 471
586 // Navigate to start URL. 472 // Navigate to start URL.
587 NavigateAndCommitActiveTab(GURL(test.start_url)); 473 NavigateAndCommitActiveTab(GURL(test.start_url));
588 EXPECT_EQ(test.start_in_instant_process, InInstantProcess(contents)) 474 EXPECT_EQ(test.start_in_instant_process, InInstantProcess(contents))
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
633 {"https://foo.com/url?strk&bar=abc", false, "Has query terms"}, 519 {"https://foo.com/url?strk&bar=abc", false, "Has query terms"},
634 {"http://foo.com/instant?strk=1", false, "Insecure URL"}, 520 {"http://foo.com/instant?strk=1", false, "Insecure URL"},
635 {"https://foo.com/instant", false, "No search term replacement"}, 521 {"https://foo.com/instant", false, "No search term replacement"},
636 {"chrome://blank/", false, "Chrome scheme"}, 522 {"chrome://blank/", false, "Chrome scheme"},
637 {"chrome-search://foo", false, "Chrome-search scheme"}, 523 {"chrome-search://foo", false, "Chrome-search scheme"},
638 {chrome::kChromeSearchLocalNtpUrl, true, "Local new tab page"}, 524 {chrome::kChromeSearchLocalNtpUrl, true, "Local new tab page"},
639 {"https://bar.com/instant?strk=1", false, "Random non-search page"}, 525 {"https://bar.com/instant?strk=1", false, "Random non-search page"},
640 }; 526 };
641 527
642 TEST_F(SearchTest, InstantNTPExtendedEnabled) { 528 TEST_F(SearchTest, InstantNTPExtendedEnabled) {
643 EnableInstantExtendedAPIForTesting(); 529 EnableQueryExtractionForTesting();
644 AddTab(browser(), GURL("chrome://blank")); 530 AddTab(browser(), GURL("chrome://blank"));
645 for (size_t i = 0; i < arraysize(kInstantNTPTestCases); ++i) { 531 for (size_t i = 0; i < arraysize(kInstantNTPTestCases); ++i) {
646 const SearchTestCase& test = kInstantNTPTestCases[i]; 532 const SearchTestCase& test = kInstantNTPTestCases[i];
647 NavigateAndCommitActiveTab(GURL(test.url)); 533 NavigateAndCommitActiveTab(GURL(test.url));
648 const content::WebContents* contents = 534 const content::WebContents* contents =
649 browser()->tab_strip_model()->GetWebContentsAt(0); 535 browser()->tab_strip_model()->GetWebContentsAt(0);
650 EXPECT_EQ(test.expected_result, IsInstantNTP(contents)) 536 EXPECT_EQ(test.expected_result, IsInstantNTP(contents))
651 << test.url << " " << test.comment; 537 << test.url << " " << test.comment;
652 } 538 }
653 } 539 }
654 540
655 TEST_F(SearchTest, InstantNTPExtendedDisabled) {
656 AddTab(browser(), GURL("chrome://blank"));
657 for (size_t i = 0; i < arraysize(kInstantNTPTestCases); ++i) {
658 const SearchTestCase& test = kInstantNTPTestCases[i];
659 NavigateAndCommitActiveTab(GURL(test.url));
660 const content::WebContents* contents =
661 browser()->tab_strip_model()->GetWebContentsAt(0);
662 EXPECT_FALSE(IsInstantNTP(contents)) << test.url << " " << test.comment;
663 }
664 }
665
666 TEST_F(SearchTest, InstantNTPCustomNavigationEntry) { 541 TEST_F(SearchTest, InstantNTPCustomNavigationEntry) {
667 EnableInstantExtendedAPIForTesting(); 542 EnableQueryExtractionForTesting();
668 AddTab(browser(), GURL("chrome://blank")); 543 AddTab(browser(), GURL("chrome://blank"));
669 for (size_t i = 0; i < arraysize(kInstantNTPTestCases); ++i) { 544 for (size_t i = 0; i < arraysize(kInstantNTPTestCases); ++i) {
670 const SearchTestCase& test = kInstantNTPTestCases[i]; 545 const SearchTestCase& test = kInstantNTPTestCases[i];
671 NavigateAndCommitActiveTab(GURL(test.url)); 546 NavigateAndCommitActiveTab(GURL(test.url));
672 content::WebContents* contents = 547 content::WebContents* contents =
673 browser()->tab_strip_model()->GetWebContentsAt(0); 548 browser()->tab_strip_model()->GetWebContentsAt(0);
674 content::NavigationController& controller = contents->GetController(); 549 content::NavigationController& controller = contents->GetController();
675 controller.SetTransientEntry( 550 controller.SetTransientEntry(
676 controller.CreateNavigationEntry(GURL("chrome://blank"), 551 controller.CreateNavigationEntry(GURL("chrome://blank"),
677 content::Referrer(), 552 content::Referrer(),
678 content::PAGE_TRANSITION_LINK, 553 content::PAGE_TRANSITION_LINK,
679 false, 554 false,
680 std::string(), 555 std::string(),
681 contents->GetBrowserContext())); 556 contents->GetBrowserContext()));
682 // The active entry is chrome://blank and not an NTP. 557 // The active entry is chrome://blank and not an NTP.
683 EXPECT_FALSE(IsInstantNTP(contents)); 558 EXPECT_FALSE(IsInstantNTP(contents));
684 EXPECT_EQ(test.expected_result, 559 EXPECT_EQ(test.expected_result,
685 NavEntryIsInstantNTP(contents, 560 NavEntryIsInstantNTP(contents,
686 controller.GetLastCommittedEntry())) 561 controller.GetLastCommittedEntry()))
687 << test.url << " " << test.comment; 562 << test.url << " " << test.comment;
688 } 563 }
689 } 564 }
690 565
691 TEST_F(SearchTest, InstantCacheableNTPNavigationEntry) { 566 TEST_F(SearchTest, InstantCacheableNTPNavigationEntry) {
692 EnableInstantExtendedAPIForTesting();
693 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("InstantExtended", 567 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("InstantExtended",
694 "Group1 use_cacheable_ntp:1")); 568 "Group1 use_cacheable_ntp:1"));
695 569
696 AddTab(browser(), GURL("chrome://blank")); 570 AddTab(browser(), GURL("chrome://blank"));
697 content::WebContents* contents = 571 content::WebContents* contents =
698 browser()->tab_strip_model()->GetWebContentsAt(0); 572 browser()->tab_strip_model()->GetWebContentsAt(0);
699 content::NavigationController& controller = contents->GetController(); 573 content::NavigationController& controller = contents->GetController();
700 // Local NTP. 574 // Local NTP.
701 NavigateAndCommitActiveTab(GURL(chrome::kChromeSearchLocalNtpUrl)); 575 NavigateAndCommitActiveTab(GURL(chrome::kChromeSearchLocalNtpUrl));
702 EXPECT_TRUE(NavEntryIsInstantNTP(contents, 576 EXPECT_TRUE(NavEntryIsInstantNTP(contents,
703 controller.GetLastCommittedEntry())); 577 controller.GetLastCommittedEntry()));
704 // Instant page is not cacheable NTP. 578 // Instant page is not cacheable NTP.
705 NavigateAndCommitActiveTab(GetInstantURL(profile(), kDisableStartMargin)); 579 NavigateAndCommitActiveTab(GetInstantURL(profile(), kDisableStartMargin));
706 EXPECT_FALSE(NavEntryIsInstantNTP(contents, 580 EXPECT_FALSE(NavEntryIsInstantNTP(contents,
707 controller.GetLastCommittedEntry())); 581 controller.GetLastCommittedEntry()));
708 // Test Cacheable NTP 582 // Test Cacheable NTP
709 NavigateAndCommitActiveTab(chrome::GetNewTabPageURL(profile())); 583 NavigateAndCommitActiveTab(chrome::GetNewTabPageURL(profile()));
710 EXPECT_TRUE(NavEntryIsInstantNTP(contents, 584 EXPECT_TRUE(NavEntryIsInstantNTP(contents,
711 controller.GetLastCommittedEntry())); 585 controller.GetLastCommittedEntry()));
712 } 586 }
713 587
714 TEST_F(SearchTest, UseLocalNTPInIncognito) { 588 TEST_F(SearchTest, UseLocalNTPInIncognito) {
715 EnableInstantExtendedAPIForTesting();
716 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("InstantExtended", 589 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("InstantExtended",
717 "Group1 use_cacheable_ntp:1")); 590 "Group1 use_cacheable_ntp:1"));
718 EXPECT_EQ(GURL(), chrome::GetNewTabPageURL( 591 EXPECT_EQ(GURL(), chrome::GetNewTabPageURL(
719 profile()->GetOffTheRecordProfile())); 592 profile()->GetOffTheRecordProfile()));
720 } 593 }
721 594
722 TEST_F(SearchTest, GetInstantURLExtendedEnabled) { 595 TEST_F(SearchTest, GetInstantURL) {
723 // Instant is disabled, so no Instant URL. 596 // No Instant URL because "strk" is missing.
724 EXPECT_EQ(GURL(), GetInstantURL(profile(), kDisableStartMargin));
725
726 // Enable Instant. Still no Instant URL because "strk" is missing.
727 EnableInstantExtendedAPIForTesting();
728 SetDefaultInstantTemplateUrl(false); 597 SetDefaultInstantTemplateUrl(false);
729 EXPECT_EQ(GURL(), GetInstantURL(profile(), kDisableStartMargin)); 598 EXPECT_EQ(GURL(), GetInstantURL(profile(), kDisableStartMargin));
730 599
731 // Set an Instant URL with a valid search terms replacement key. 600 // Set an Instant URL with a valid search terms replacement key.
732 SetDefaultInstantTemplateUrl(true); 601 SetDefaultInstantTemplateUrl(true);
733 602
734 // Now there should be a valid Instant URL. Note the HTTPS "upgrade". 603 // Now there should be a valid Instant URL. Note the HTTPS "upgrade".
735 EXPECT_EQ(GURL("https://foo.com/instant?foo=foo#foo=foo&strk"), 604 EXPECT_EQ(GURL("https://foo.com/instant?foo=foo#foo=foo&strk"),
736 GetInstantURL(profile(), kDisableStartMargin)); 605 GetInstantURL(profile(), kDisableStartMargin));
737 606
738 // Enable suggest. No difference. 607 // Enable suggest. No difference.
739 profile()->GetPrefs()->SetBoolean(prefs::kSearchSuggestEnabled, true); 608 profile()->GetPrefs()->SetBoolean(prefs::kSearchSuggestEnabled, true);
740 EXPECT_EQ(GURL("https://foo.com/instant?foo=foo#foo=foo&strk"), 609 EXPECT_EQ(GURL("https://foo.com/instant?foo=foo#foo=foo&strk"),
741 GetInstantURL(profile(), kDisableStartMargin)); 610 GetInstantURL(profile(), kDisableStartMargin));
742 611
743 // Disable suggest. No Instant URL. 612 // Disable suggest. No Instant URL.
744 profile()->GetPrefs()->SetBoolean(prefs::kSearchSuggestEnabled, false); 613 profile()->GetPrefs()->SetBoolean(prefs::kSearchSuggestEnabled, false);
745 EXPECT_EQ(GURL(), GetInstantURL(profile(), kDisableStartMargin)); 614 EXPECT_EQ(GURL(), GetInstantURL(profile(), kDisableStartMargin));
746 } 615 }
747 616
748 TEST_F(SearchTest, StartMarginCGI) { 617 TEST_F(SearchTest, StartMarginCGI) {
749 // Instant is disabled, so no Instant URL. 618 // No margin.
750 EXPECT_EQ(GURL(), GetInstantURL(profile(), kDisableStartMargin));
751
752 // Enable Instant. No margin.
753 EnableInstantExtendedAPIForTesting();
754 profile()->GetPrefs()->SetBoolean(prefs::kSearchSuggestEnabled, true); 619 profile()->GetPrefs()->SetBoolean(prefs::kSearchSuggestEnabled, true);
755
756 EXPECT_EQ(GURL("https://foo.com/instant?foo=foo#foo=foo&strk"), 620 EXPECT_EQ(GURL("https://foo.com/instant?foo=foo#foo=foo&strk"),
757 GetInstantURL(profile(), kDisableStartMargin)); 621 GetInstantURL(profile(), kDisableStartMargin));
758 622
759 // With start margin. 623 // With start margin.
760 EXPECT_EQ(GURL("https://foo.com/instant?es_sm=10&foo=foo#foo=foo&strk"), 624 EXPECT_EQ(GURL("https://foo.com/instant?es_sm=10&foo=foo#foo=foo&strk"),
761 GetInstantURL(profile(), 10)); 625 GetInstantURL(profile(), 10));
762 } 626 }
763 627
764 TEST_F(SearchTest, CommandLineOverrides) { 628 TEST_F(SearchTest, CommandLineOverrides) {
765 EnableInstantExtendedAPIForTesting(); 629 EnableQueryExtractionForTesting();
766 630
767 GURL local_instant_url(GetLocalInstantURL(profile())); 631 GURL local_instant_url(GetLocalInstantURL(profile()));
768 EXPECT_EQ(GURL(chrome::kChromeSearchLocalNtpUrl), local_instant_url); 632 EXPECT_EQ(GURL(chrome::kChromeSearchLocalNtpUrl), local_instant_url);
769 633
770 TemplateURLService* template_url_service = 634 TemplateURLService* template_url_service =
771 TemplateURLServiceFactory::GetForProfile(profile()); 635 TemplateURLServiceFactory::GetForProfile(profile());
772 TemplateURLData data; 636 TemplateURLData data;
773 data.SetURL("{google:baseURL}search?q={searchTerms}"); 637 data.SetURL("{google:baseURL}search?q={searchTerms}");
774 data.instant_url = "{google:baseURL}webhp?strk"; 638 data.instant_url = "{google:baseURL}webhp?strk";
775 data.search_terms_replacement_key = "strk"; 639 data.search_terms_replacement_key = "strk";
(...skipping 27 matching lines...) Expand all
803 // If we specify extra search query params, they should be inserted into the 667 // If we specify extra search query params, they should be inserted into the
804 // query portion of the instant URL. 668 // query portion of the instant URL.
805 CommandLine::ForCurrentProcess()->AppendSwitchASCII( 669 CommandLine::ForCurrentProcess()->AppendSwitchASCII(
806 switches::kExtraSearchQueryParams, "a=b"); 670 switches::kExtraSearchQueryParams, "a=b");
807 instant_url = GetInstantURL(profile(), kDisableStartMargin); 671 instant_url = GetInstantURL(profile(), kDisableStartMargin);
808 ASSERT_TRUE(instant_url.is_valid()); 672 ASSERT_TRUE(instant_url.is_valid());
809 EXPECT_EQ("http://www.bar.com/webhp?a=b&strk", instant_url.spec()); 673 EXPECT_EQ("http://www.bar.com/webhp?a=b&strk", instant_url.spec());
810 } 674 }
811 675
812 TEST_F(SearchTest, ShouldShowInstantNTP_Default) { 676 TEST_F(SearchTest, ShouldShowInstantNTP_Default) {
813 EnableInstantExtendedAPIForTesting();
814 EXPECT_TRUE(ShouldShowInstantNTP()); 677 EXPECT_TRUE(ShouldShowInstantNTP());
815 } 678 }
816 679
817 TEST_F(SearchTest, ShouldShowInstantNTP_DisabledViaFinch) { 680 TEST_F(SearchTest, ShouldShowInstantNTP_DisabledViaFinch) {
818 EnableInstantExtendedAPIForTesting();
819 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("InstantExtended", 681 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("InstantExtended",
820 "Group1 show_ntp:0")); 682 "Group1 show_ntp:0"));
821 EXPECT_FALSE(ShouldShowInstantNTP()); 683 EXPECT_FALSE(ShouldShowInstantNTP());
822 } 684 }
823 685
824 TEST_F(SearchTest, ShouldShowInstantNTP_DisabledByUseCacheableNTPFinchFlag) { 686 TEST_F(SearchTest, ShouldShowInstantNTP_DisabledByUseCacheableNTPFinchFlag) {
825 EnableInstantExtendedAPIForTesting();
826 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("InstantExtended", 687 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("InstantExtended",
827 "Group1 use_cacheable_ntp:1")); 688 "Group1 use_cacheable_ntp:1"));
828 EXPECT_FALSE(ShouldShowInstantNTP()); 689 EXPECT_FALSE(ShouldShowInstantNTP());
829 } 690 }
830 691
831 TEST_F(SearchTest, ShouldUseCacheableNTP_Default) { 692 TEST_F(SearchTest, ShouldUseCacheableNTP_Default) {
832 EnableInstantExtendedAPIForTesting();
833 EXPECT_FALSE(ShouldUseCacheableNTP()); 693 EXPECT_FALSE(ShouldUseCacheableNTP());
834 } 694 }
835 695
836 TEST_F(SearchTest, ShouldUseCacheableNTP_EnabledViaFinch) { 696 TEST_F(SearchTest, ShouldUseCacheableNTP_EnabledViaFinch) {
837 EnableInstantExtendedAPIForTesting();
838 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("InstantExtended", 697 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("InstantExtended",
839 "Group1 use_cacheable_ntp:1")); 698 "Group1 use_cacheable_ntp:1"));
840 EXPECT_TRUE(ShouldUseCacheableNTP()); 699 EXPECT_TRUE(ShouldUseCacheableNTP());
841 } 700 }
842 701
843 TEST_F(SearchTest, ShouldUseCacheableNTP_EnabledViaCommandLine) { 702 TEST_F(SearchTest, ShouldUseCacheableNTP_EnabledViaCommandLine) {
844 EnableInstantExtendedAPIForTesting();
845 CommandLine::ForCurrentProcess()-> 703 CommandLine::ForCurrentProcess()->
846 AppendSwitch(switches::kUseCacheableNewTabPage); 704 AppendSwitch(switches::kUseCacheableNewTabPage);
847 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("InstantExtended", 705 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("InstantExtended",
848 "Group1 use_cacheable_ntp:0")); 706 "Group1 use_cacheable_ntp:0"));
849 EXPECT_TRUE(ShouldUseCacheableNTP()); 707 EXPECT_TRUE(ShouldUseCacheableNTP());
850 } 708 }
851 709
852 TEST_F(SearchTest, IsNTPURL) { 710 TEST_F(SearchTest, IsNTPURL) {
853 GURL invalid_url; 711 GURL invalid_url;
854 GURL ntp_url(chrome::kChromeUINewTabURL); 712 GURL ntp_url(chrome::kChromeUINewTabURL);
855 GURL local_ntp_url(GetLocalInstantURL(profile())); 713 GURL local_ntp_url(GetLocalInstantURL(profile()));
856 714
857 EXPECT_FALSE(chrome::IsNTPURL(invalid_url, profile())); 715 EXPECT_FALSE(chrome::IsNTPURL(invalid_url, profile()));
858 EXPECT_FALSE(chrome::IsNTPURL(local_ntp_url, profile()));
859 716
860 EXPECT_TRUE(chrome::IsNTPURL(ntp_url, NULL)); 717 EnableQueryExtractionForTesting();
861 EXPECT_FALSE(chrome::IsNTPURL(local_ntp_url, NULL));
862
863 // Enable Instant. No margin.
864 EnableInstantExtendedAPIForTesting();
865 profile()->GetPrefs()->SetBoolean(prefs::kSearchSuggestEnabled, true); 718 profile()->GetPrefs()->SetBoolean(prefs::kSearchSuggestEnabled, true);
866 GURL remote_ntp_url(GetInstantURL(profile(), kDisableStartMargin)); 719 GURL remote_ntp_url(GetInstantURL(profile(), kDisableStartMargin));
867 GURL search_url_with_search_terms("https://foo.com/url?strk&bar=abc"); 720 GURL search_url_with_search_terms("https://foo.com/url?strk&bar=abc");
868 GURL search_url_without_search_terms("https://foo.com/url?strk&bar"); 721 GURL search_url_without_search_terms("https://foo.com/url?strk&bar");
869 722
870 EXPECT_FALSE(chrome::IsNTPURL(ntp_url, profile())); 723 EXPECT_FALSE(chrome::IsNTPURL(ntp_url, profile()));
871 EXPECT_TRUE(chrome::IsNTPURL(local_ntp_url, profile())); 724 EXPECT_TRUE(chrome::IsNTPURL(local_ntp_url, profile()));
872 EXPECT_TRUE(chrome::IsNTPURL(remote_ntp_url, profile())); 725 EXPECT_TRUE(chrome::IsNTPURL(remote_ntp_url, profile()));
873 EXPECT_FALSE(chrome::IsNTPURL(search_url_with_search_terms, profile())); 726 EXPECT_FALSE(chrome::IsNTPURL(search_url_with_search_terms, profile()));
874 EXPECT_TRUE(chrome::IsNTPURL(search_url_without_search_terms, profile())); 727 EXPECT_TRUE(chrome::IsNTPURL(search_url_without_search_terms, profile()));
875 728
876 EXPECT_FALSE(chrome::IsNTPURL(ntp_url, NULL)); 729 EXPECT_FALSE(chrome::IsNTPURL(ntp_url, NULL));
877 EXPECT_FALSE(chrome::IsNTPURL(local_ntp_url, NULL)); 730 EXPECT_FALSE(chrome::IsNTPURL(local_ntp_url, NULL));
878 EXPECT_FALSE(chrome::IsNTPURL(remote_ntp_url, NULL)); 731 EXPECT_FALSE(chrome::IsNTPURL(remote_ntp_url, NULL));
879 EXPECT_FALSE(chrome::IsNTPURL(search_url_with_search_terms, NULL)); 732 EXPECT_FALSE(chrome::IsNTPURL(search_url_with_search_terms, NULL));
880 EXPECT_FALSE(chrome::IsNTPURL(search_url_without_search_terms, NULL)); 733 EXPECT_FALSE(chrome::IsNTPURL(search_url_without_search_terms, NULL));
881 } 734 }
882 735
883 } // namespace chrome 736 } // namespace chrome
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698