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

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

Issue 20388003: Reload Instant NTP and Instant-process tabs on search url change (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added ui and unit tests Created 7 years, 4 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
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" 7 #include "base/metrics/histogram_base.h"
8 #include "base/metrics/histogram_samples.h" 8 #include "base/metrics/histogram_samples.h"
9 #include "base/metrics/statistics_recorder.h" 9 #include "base/metrics/statistics_recorder.h"
10 #include "base/prefs/pref_service.h" 10 #include "base/prefs/pref_service.h"
11 #include "chrome/browser/search/instant_service.h" 11 #include "chrome/browser/search/instant_service.h"
12 #include "chrome/browser/search/instant_service_factory.h" 12 #include "chrome/browser/search/instant_service_factory.h"
13 #include "chrome/browser/search/search.h" 13 #include "chrome/browser/search/search.h"
14 #include "chrome/browser/search/search_test_utils.h"
14 #include "chrome/browser/search_engines/search_terms_data.h" 15 #include "chrome/browser/search_engines/search_terms_data.h"
15 #include "chrome/browser/search_engines/template_url_service.h" 16 #include "chrome/browser/search_engines/template_url_service.h"
16 #include "chrome/browser/search_engines/template_url_service_factory.h" 17 #include "chrome/browser/search_engines/template_url_service_factory.h"
17 #include "chrome/browser/ui/tabs/tab_strip_model.h" 18 #include "chrome/browser/ui/tabs/tab_strip_model.h"
18 #include "chrome/common/chrome_switches.h" 19 #include "chrome/common/chrome_switches.h"
19 #include "chrome/common/metrics/entropy_provider.h" 20 #include "chrome/common/metrics/entropy_provider.h"
20 #include "chrome/common/pref_names.h" 21 #include "chrome/common/pref_names.h"
21 #include "chrome/common/url_constants.h" 22 #include "chrome/common/url_constants.h"
22 #include "chrome/test/base/browser_with_test_window_test.h" 23 #include "chrome/test/base/browser_with_test_window_test.h"
23 #include "chrome/test/base/ui_test_utils.h" 24 #include "chrome/test/base/ui_test_utils.h"
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 protected: 178 protected:
178 virtual void SetUp() OVERRIDE { 179 virtual void SetUp() OVERRIDE {
179 BrowserWithTestWindowTest::SetUp(); 180 BrowserWithTestWindowTest::SetUp();
180 field_trial_list_.reset(new base::FieldTrialList( 181 field_trial_list_.reset(new base::FieldTrialList(
181 new metrics::SHA1EntropyProvider("42"))); 182 new metrics::SHA1EntropyProvider("42")));
182 TemplateURLServiceFactory::GetInstance()->SetTestingFactoryAndUse( 183 TemplateURLServiceFactory::GetInstance()->SetTestingFactoryAndUse(
183 profile(), &TemplateURLServiceFactory::BuildInstanceFor); 184 profile(), &TemplateURLServiceFactory::BuildInstanceFor);
184 TemplateURLService* template_url_service = 185 TemplateURLService* template_url_service =
185 TemplateURLServiceFactory::GetForProfile(profile()); 186 TemplateURLServiceFactory::GetForProfile(profile());
186 ui_test_utils::WaitForTemplateURLServiceToLoad(template_url_service); 187 ui_test_utils::WaitForTemplateURLServiceToLoad(template_url_service);
187 SetSearchProvider(); 188 search_test_utils::SetSearchProvider(profile());
188 }
189
190 void SetSearchProvider() {
191 TemplateURLService* template_url_service =
192 TemplateURLServiceFactory::GetForProfile(profile());
193 TemplateURLData data;
194 data.SetURL("http://foo.com/url?bar={searchTerms}");
195 data.instant_url = "http://foo.com/instant?"
196 "{google:omniboxStartMarginParameter}foo=foo#foo=foo&strk";
197 data.alternate_urls.push_back("http://foo.com/alt#quux={searchTerms}");
198 data.search_terms_replacement_key = "strk";
199
200 TemplateURL* template_url = new TemplateURL(profile(), data);
201 // Takes ownership of |template_url|.
202 template_url_service->Add(template_url);
203 template_url_service->SetDefaultSearchProvider(template_url);
204 }
205
206 // Build an Instant URL with or without a valid search terms replacement key
207 // as per |has_search_term_replacement_key|. Set that URL as the instant URL
208 // for the default search provider.
209 void SetDefaultInstantTemplateUrl(bool has_search_term_replacement_key) {
210 TemplateURLService* template_url_service =
211 TemplateURLServiceFactory::GetForProfile(profile());
212
213 static const char kInstantURLWithStrk[] =
214 "http://foo.com/instant?foo=foo#foo=foo&strk";
215 static const char kInstantURLNoStrk[] =
216 "http://foo.com/instant?foo=foo#foo=foo";
217
218 TemplateURLData data;
219 data.SetURL("http://foo.com/url?bar={searchTerms}");
220 data.instant_url = (has_search_term_replacement_key ?
221 kInstantURLWithStrk : kInstantURLNoStrk);
222 data.search_terms_replacement_key = "strk";
223
224 TemplateURL* template_url = new TemplateURL(profile(), data);
225 // Takes ownership of |template_url|.
226 template_url_service->Add(template_url);
227 template_url_service->SetDefaultSearchProvider(template_url);
228 } 189 }
229 190
230 bool InInstantProcess(const content::WebContents* contents) { 191 bool InInstantProcess(const content::WebContents* contents) {
231 InstantService* instant_service = 192 InstantService* instant_service =
232 InstantServiceFactory::GetForProfile(profile()); 193 InstantServiceFactory::GetForProfile(profile());
233 return instant_service->IsInstantProcess( 194 return instant_service->IsInstantProcess(
234 contents->GetRenderProcessHost()->GetID()); 195 contents->GetRenderProcessHost()->GetID());
235 } 196 }
236 197
237 scoped_ptr<base::FieldTrialList> field_trial_list_; 198 scoped_ptr<base::FieldTrialList> field_trial_list_;
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after
516 << test.url << " " << test.comment; 477 << test.url << " " << test.comment;
517 } 478 }
518 } 479 }
519 480
520 TEST_F(SearchTest, GetInstantURLExtendedEnabled) { 481 TEST_F(SearchTest, GetInstantURLExtendedEnabled) {
521 // Instant is disabled, so no Instant URL. 482 // Instant is disabled, so no Instant URL.
522 EXPECT_EQ(GURL(), GetInstantURL(profile(), kDisableStartMargin)); 483 EXPECT_EQ(GURL(), GetInstantURL(profile(), kDisableStartMargin));
523 484
524 // Enable Instant. Still no Instant URL because "strk" is missing. 485 // Enable Instant. Still no Instant URL because "strk" is missing.
525 EnableInstantExtendedAPIForTesting(); 486 EnableInstantExtendedAPIForTesting();
526 SetDefaultInstantTemplateUrl(false); 487 search_test_utils::SetDefaultInstantTemplateUrl(profile(), false);
527 EXPECT_EQ(GURL(), GetInstantURL(profile(), kDisableStartMargin)); 488 EXPECT_EQ(GURL(), GetInstantURL(profile(), kDisableStartMargin));
528 489
529 // Set an Instant URL with a valid search terms replacement key. 490 // Set an Instant URL with a valid search terms replacement key.
530 SetDefaultInstantTemplateUrl(true); 491 search_test_utils::SetDefaultInstantTemplateUrl(profile(), true);
531 492
532 // Now there should be a valid Instant URL. Note the HTTPS "upgrade". 493 // Now there should be a valid Instant URL. Note the HTTPS "upgrade".
533 EXPECT_EQ(GURL("https://foo.com/instant?foo=foo#foo=foo&strk"), 494 EXPECT_EQ(GURL("https://foo.com/instant?foo=foo#foo=foo&strk"),
534 GetInstantURL(profile(), kDisableStartMargin)); 495 GetInstantURL(profile(), kDisableStartMargin));
535 496
536 // Enable suggest. No difference. 497 // Enable suggest. No difference.
537 profile()->GetPrefs()->SetBoolean(prefs::kSearchSuggestEnabled, true); 498 profile()->GetPrefs()->SetBoolean(prefs::kSearchSuggestEnabled, true);
538 EXPECT_EQ(GURL("https://foo.com/instant?foo=foo#foo=foo&strk"), 499 EXPECT_EQ(GURL("https://foo.com/instant?foo=foo#foo=foo&strk"),
539 GetInstantURL(profile(), kDisableStartMargin)); 500 GetInstantURL(profile(), kDisableStartMargin));
540 501
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
620 } 581 }
621 582
622 TEST_F(SearchTest, ShouldShowInstantNTP_DisabledByInstantNewTabURLSwitch) { 583 TEST_F(SearchTest, ShouldShowInstantNTP_DisabledByInstantNewTabURLSwitch) {
623 EnableInstantExtendedAPIForTesting(); 584 EnableInstantExtendedAPIForTesting();
624 CommandLine::ForCurrentProcess()->AppendSwitchASCII( 585 CommandLine::ForCurrentProcess()->AppendSwitchASCII(
625 switches::kInstantNewTabURL, "http://example.com/newtab"); 586 switches::kInstantNewTabURL, "http://example.com/newtab");
626 EXPECT_FALSE(ShouldShowInstantNTP()); 587 EXPECT_FALSE(ShouldShowInstantNTP());
627 } 588 }
628 589
629 } // namespace chrome 590 } // namespace chrome
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698