OLD | NEW |
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" |
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
168 ui_test_utils::WaitForTemplateURLServiceToLoad(template_url_service); | 168 ui_test_utils::WaitForTemplateURLServiceToLoad(template_url_service); |
169 SetSearchProvider(true, false); | 169 SetSearchProvider(true, false); |
170 } | 170 } |
171 | 171 |
172 virtual void SetSearchProvider(bool set_ntp_url, bool insecure_ntp_url) { | 172 virtual void SetSearchProvider(bool set_ntp_url, bool insecure_ntp_url) { |
173 TemplateURLService* template_url_service = | 173 TemplateURLService* template_url_service = |
174 TemplateURLServiceFactory::GetForProfile(profile()); | 174 TemplateURLServiceFactory::GetForProfile(profile()); |
175 TemplateURLData data; | 175 TemplateURLData data; |
176 data.SetURL("http://foo.com/url?bar={searchTerms}"); | 176 data.SetURL("http://foo.com/url?bar={searchTerms}"); |
177 data.instant_url = "http://foo.com/instant?" | 177 data.instant_url = "http://foo.com/instant?" |
178 "{google:omniboxStartMarginParameter}{google:forceInstantResults}" | 178 "{google:forceInstantResults}foo=foo#foo=foo&strk"; |
179 "foo=foo#foo=foo&strk"; | |
180 if (set_ntp_url) { | 179 if (set_ntp_url) { |
181 data.new_tab_url = (insecure_ntp_url ? "http" : "https") + | 180 data.new_tab_url = (insecure_ntp_url ? "http" : "https") + |
182 std::string("://foo.com/newtab?strk"); | 181 std::string("://foo.com/newtab?strk"); |
183 } | 182 } |
184 data.alternate_urls.push_back("http://foo.com/alt#quux={searchTerms}"); | 183 data.alternate_urls.push_back("http://foo.com/alt#quux={searchTerms}"); |
185 data.search_terms_replacement_key = "strk"; | 184 data.search_terms_replacement_key = "strk"; |
186 | 185 |
187 TemplateURL* template_url = new TemplateURL(data); | 186 TemplateURL* template_url = new TemplateURL(data); |
188 // Takes ownership of |template_url|. | 187 // Takes ownership of |template_url|. |
189 template_url_service->Add(template_url); | 188 template_url_service->Add(template_url); |
(...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
492 TEST_F(SearchTest, InstantCacheableNTPNavigationEntry) { | 491 TEST_F(SearchTest, InstantCacheableNTPNavigationEntry) { |
493 AddTab(browser(), GURL("chrome://blank")); | 492 AddTab(browser(), GURL("chrome://blank")); |
494 content::WebContents* contents = | 493 content::WebContents* contents = |
495 browser()->tab_strip_model()->GetWebContentsAt(0); | 494 browser()->tab_strip_model()->GetWebContentsAt(0); |
496 content::NavigationController& controller = contents->GetController(); | 495 content::NavigationController& controller = contents->GetController(); |
497 // Local NTP. | 496 // Local NTP. |
498 NavigateAndCommitActiveTab(GURL(chrome::kChromeSearchLocalNtpUrl)); | 497 NavigateAndCommitActiveTab(GURL(chrome::kChromeSearchLocalNtpUrl)); |
499 EXPECT_TRUE(NavEntryIsInstantNTP(contents, | 498 EXPECT_TRUE(NavEntryIsInstantNTP(contents, |
500 controller.GetLastCommittedEntry())); | 499 controller.GetLastCommittedEntry())); |
501 // Instant page is not cacheable NTP. | 500 // Instant page is not cacheable NTP. |
502 NavigateAndCommitActiveTab(GetInstantURL(profile(), kDisableStartMargin, | 501 NavigateAndCommitActiveTab(GetInstantURL(profile(), false)); |
503 false)); | |
504 EXPECT_FALSE(NavEntryIsInstantNTP(contents, | 502 EXPECT_FALSE(NavEntryIsInstantNTP(contents, |
505 controller.GetLastCommittedEntry())); | 503 controller.GetLastCommittedEntry())); |
506 // Test Cacheable NTP | 504 // Test Cacheable NTP |
507 NavigateAndCommitActiveTab(chrome::GetNewTabPageURL(profile())); | 505 NavigateAndCommitActiveTab(chrome::GetNewTabPageURL(profile())); |
508 EXPECT_TRUE(NavEntryIsInstantNTP(contents, | 506 EXPECT_TRUE(NavEntryIsInstantNTP(contents, |
509 controller.GetLastCommittedEntry())); | 507 controller.GetLastCommittedEntry())); |
510 } | 508 } |
511 | 509 |
512 TEST_F(SearchTest, InstantCacheableNTPNavigationEntryNewProfile) { | 510 TEST_F(SearchTest, InstantCacheableNTPNavigationEntryNewProfile) { |
513 SetSearchProvider(false, false); | 511 SetSearchProvider(false, false); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
560 supervised_user_service->GetURLFilterForUIThread(); | 558 supervised_user_service->GetURLFilterForUIThread(); |
561 std::map<std::string, bool> hosts; | 559 std::map<std::string, bool> hosts; |
562 hosts["foo.com"] = false; | 560 hosts["foo.com"] = false; |
563 url_filter->SetManualHosts(&hosts); | 561 url_filter->SetManualHosts(&hosts); |
564 | 562 |
565 EXPECT_EQ(GURL(chrome::kChromeSearchLocalNtpUrl), | 563 EXPECT_EQ(GURL(chrome::kChromeSearchLocalNtpUrl), |
566 chrome::GetNewTabPageURL(profile())); | 564 chrome::GetNewTabPageURL(profile())); |
567 GURL new_tab_url(chrome::kChromeUINewTabURL); | 565 GURL new_tab_url(chrome::kChromeUINewTabURL); |
568 EXPECT_TRUE(HandleNewTabURLRewrite(&new_tab_url, profile())); | 566 EXPECT_TRUE(HandleNewTabURLRewrite(&new_tab_url, profile())); |
569 EXPECT_EQ(GURL(chrome::kChromeSearchLocalNtpUrl), new_tab_url); | 567 EXPECT_EQ(GURL(chrome::kChromeSearchLocalNtpUrl), new_tab_url); |
570 EXPECT_EQ(GURL(), GetInstantURL(profile(), kDisableStartMargin, false)); | 568 EXPECT_EQ(GURL(), GetInstantURL(profile(), false)); |
571 } | 569 } |
572 | 570 |
573 TEST_F(SearchTest, GetInstantURL) { | 571 TEST_F(SearchTest, GetInstantURL) { |
574 // No Instant URL because "strk" is missing. | 572 // No Instant URL because "strk" is missing. |
575 SetDefaultInstantTemplateUrl(false); | 573 SetDefaultInstantTemplateUrl(false); |
576 EXPECT_EQ(GURL(), GetInstantURL(profile(), kDisableStartMargin, false)); | 574 EXPECT_EQ(GURL(), GetInstantURL(profile(), false)); |
577 | 575 |
578 // Set an Instant URL with a valid search terms replacement key. | 576 // Set an Instant URL with a valid search terms replacement key. |
579 SetDefaultInstantTemplateUrl(true); | 577 SetDefaultInstantTemplateUrl(true); |
580 | 578 |
581 // Now there should be a valid Instant URL. Note the HTTPS "upgrade". | 579 // Now there should be a valid Instant URL. Note the HTTPS "upgrade". |
582 EXPECT_EQ(GURL("https://foo.com/instant?foo=foo#foo=foo&strk"), | 580 EXPECT_EQ(GURL("https://foo.com/instant?foo=foo#foo=foo&strk"), |
583 GetInstantURL(profile(), kDisableStartMargin, false)); | 581 GetInstantURL(profile(), false)); |
584 | 582 |
585 // Enable suggest. No difference. | 583 // Enable suggest. No difference. |
586 profile()->GetPrefs()->SetBoolean(prefs::kSearchSuggestEnabled, true); | 584 profile()->GetPrefs()->SetBoolean(prefs::kSearchSuggestEnabled, true); |
587 EXPECT_EQ(GURL("https://foo.com/instant?foo=foo#foo=foo&strk"), | 585 EXPECT_EQ(GURL("https://foo.com/instant?foo=foo#foo=foo&strk"), |
588 GetInstantURL(profile(), kDisableStartMargin, false)); | 586 GetInstantURL(profile(), false)); |
589 | 587 |
590 // Disable suggest. No Instant URL. | 588 // Disable suggest. No Instant URL. |
591 profile()->GetPrefs()->SetBoolean(prefs::kSearchSuggestEnabled, false); | 589 profile()->GetPrefs()->SetBoolean(prefs::kSearchSuggestEnabled, false); |
592 EXPECT_EQ(GURL(), GetInstantURL(profile(), kDisableStartMargin, false)); | 590 EXPECT_EQ(GURL(), GetInstantURL(profile(), false)); |
593 | 591 |
594 // Use alternate Instant search base URL. | 592 // Use alternate Instant search base URL. |
595 profile()->GetPrefs()->SetBoolean(prefs::kSearchSuggestEnabled, true); | 593 profile()->GetPrefs()->SetBoolean(prefs::kSearchSuggestEnabled, true); |
596 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( | 594 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( |
597 "EmbeddedSearch", "Group1 espv:8 use_alternate_instant_url:1")); | 595 "EmbeddedSearch", "Group1 espv:8 use_alternate_instant_url:1")); |
598 EXPECT_EQ(GURL("https://foo.com/search?foo=foo&qbp=1#foo=foo&strk"), | 596 EXPECT_EQ(GURL("https://foo.com/search?foo=foo&qbp=1#foo=foo&strk"), |
599 GetInstantURL(profile(), kDisableStartMargin, false)); | 597 GetInstantURL(profile(), false)); |
600 } | |
601 | |
602 TEST_F(SearchTest, StartMarginCGI) { | |
603 // No margin. | |
604 profile()->GetPrefs()->SetBoolean(prefs::kSearchSuggestEnabled, true); | |
605 | |
606 EXPECT_EQ(GURL("https://foo.com/instant?foo=foo#foo=foo&strk"), | |
607 GetInstantURL(profile(), kDisableStartMargin, false)); | |
608 | |
609 // With start margin. | |
610 EXPECT_EQ(GURL("https://foo.com/instant?es_sm=10&foo=foo#foo=foo&strk"), | |
611 GetInstantURL(profile(), 10, false)); | |
612 } | 598 } |
613 | 599 |
614 TEST_F(SearchTest, InstantSearchEnabledCGI) { | 600 TEST_F(SearchTest, InstantSearchEnabledCGI) { |
615 // Disable Instant Search. | 601 // Disable Instant Search. |
616 // Make sure {google:forceInstantResults} is not set in the Instant URL. | 602 // Make sure {google:forceInstantResults} is not set in the Instant URL. |
617 EXPECT_EQ(GURL("https://foo.com/instant?foo=foo#foo=foo&strk"), | 603 EXPECT_EQ(GURL("https://foo.com/instant?foo=foo#foo=foo&strk"), |
618 GetInstantURL(profile(), kDisableStartMargin, false)); | 604 GetInstantURL(profile(), false)); |
619 | 605 |
620 // Enable Instant Search. | 606 // Enable Instant Search. |
621 // Make sure {google:forceInstantResults} is set in the Instant URL. | 607 // Make sure {google:forceInstantResults} is set in the Instant URL. |
622 EXPECT_EQ(GURL("https://foo.com/instant?ion=1&foo=foo#foo=foo&strk"), | 608 EXPECT_EQ(GURL("https://foo.com/instant?ion=1&foo=foo#foo=foo&strk"), |
623 GetInstantURL(profile(), kDisableStartMargin, true)); | 609 GetInstantURL(profile(), true)); |
624 } | 610 } |
625 | 611 |
626 TEST_F(SearchTest, CommandLineOverrides) { | 612 TEST_F(SearchTest, CommandLineOverrides) { |
627 GURL local_instant_url(GetLocalInstantURL(profile())); | 613 GURL local_instant_url(GetLocalInstantURL(profile())); |
628 EXPECT_EQ(GURL(chrome::kChromeSearchLocalNtpUrl), local_instant_url); | 614 EXPECT_EQ(GURL(chrome::kChromeSearchLocalNtpUrl), local_instant_url); |
629 | 615 |
630 TemplateURLService* template_url_service = | 616 TemplateURLService* template_url_service = |
631 TemplateURLServiceFactory::GetForProfile(profile()); | 617 TemplateURLServiceFactory::GetForProfile(profile()); |
632 TemplateURLData data; | 618 TemplateURLData data; |
633 data.SetURL("{google:baseURL}search?q={searchTerms}"); | 619 data.SetURL("{google:baseURL}search?q={searchTerms}"); |
634 data.instant_url = "{google:baseURL}webhp?strk"; | 620 data.instant_url = "{google:baseURL}webhp?strk"; |
635 data.search_terms_replacement_key = "strk"; | 621 data.search_terms_replacement_key = "strk"; |
636 TemplateURL* template_url = new TemplateURL(data); | 622 TemplateURL* template_url = new TemplateURL(data); |
637 // Takes ownership of |template_url|. | 623 // Takes ownership of |template_url|. |
638 template_url_service->Add(template_url); | 624 template_url_service->Add(template_url); |
639 template_url_service->SetUserSelectedDefaultSearchProvider(template_url); | 625 template_url_service->SetUserSelectedDefaultSearchProvider(template_url); |
640 | 626 |
641 // By default, Instant Extended forces the instant URL to be HTTPS, so even if | 627 // By default, Instant Extended forces the instant URL to be HTTPS, so even if |
642 // we set a Google base URL that is HTTP, we should get an HTTPS URL. | 628 // we set a Google base URL that is HTTP, we should get an HTTPS URL. |
643 UIThreadSearchTermsData::SetGoogleBaseURL("http://www.foo.com/"); | 629 UIThreadSearchTermsData::SetGoogleBaseURL("http://www.foo.com/"); |
644 GURL instant_url(GetInstantURL(profile(), kDisableStartMargin, false)); | 630 GURL instant_url(GetInstantURL(profile(), false)); |
645 ASSERT_TRUE(instant_url.is_valid()); | 631 ASSERT_TRUE(instant_url.is_valid()); |
646 EXPECT_EQ("https://www.foo.com/webhp?strk", instant_url.spec()); | 632 EXPECT_EQ("https://www.foo.com/webhp?strk", instant_url.spec()); |
647 | 633 |
648 // However, if the Google base URL is specified on the command line, the | 634 // However, if the Google base URL is specified on the command line, the |
649 // instant URL should just use it, even if it's HTTP. | 635 // instant URL should just use it, even if it's HTTP. |
650 UIThreadSearchTermsData::SetGoogleBaseURL(std::string()); | 636 UIThreadSearchTermsData::SetGoogleBaseURL(std::string()); |
651 CommandLine::ForCurrentProcess()->AppendSwitchASCII(switches::kGoogleBaseURL, | 637 CommandLine::ForCurrentProcess()->AppendSwitchASCII(switches::kGoogleBaseURL, |
652 "http://www.bar.com/"); | 638 "http://www.bar.com/"); |
653 instant_url = GetInstantURL(profile(), kDisableStartMargin, false); | 639 instant_url = GetInstantURL(profile(), false); |
654 ASSERT_TRUE(instant_url.is_valid()); | 640 ASSERT_TRUE(instant_url.is_valid()); |
655 EXPECT_EQ("http://www.bar.com/webhp?strk", instant_url.spec()); | 641 EXPECT_EQ("http://www.bar.com/webhp?strk", instant_url.spec()); |
656 | 642 |
657 // Similarly, setting a Google base URL on the command line should allow you | 643 // Similarly, setting a Google base URL on the command line should allow you |
658 // to get the Google version of the local NTP, even though search provider's | 644 // to get the Google version of the local NTP, even though search provider's |
659 // URL doesn't contain "google". | 645 // URL doesn't contain "google". |
660 local_instant_url = GetLocalInstantURL(profile()); | 646 local_instant_url = GetLocalInstantURL(profile()); |
661 EXPECT_EQ(GURL(chrome::kChromeSearchLocalNtpUrl), local_instant_url); | 647 EXPECT_EQ(GURL(chrome::kChromeSearchLocalNtpUrl), local_instant_url); |
662 | 648 |
663 // If we specify extra search query params, they should be inserted into the | 649 // If we specify extra search query params, they should be inserted into the |
664 // query portion of the instant URL. | 650 // query portion of the instant URL. |
665 CommandLine::ForCurrentProcess()->AppendSwitchASCII( | 651 CommandLine::ForCurrentProcess()->AppendSwitchASCII( |
666 switches::kExtraSearchQueryParams, "a=b"); | 652 switches::kExtraSearchQueryParams, "a=b"); |
667 instant_url = GetInstantURL(profile(), kDisableStartMargin, false); | 653 instant_url = GetInstantURL(profile(), false); |
668 ASSERT_TRUE(instant_url.is_valid()); | 654 ASSERT_TRUE(instant_url.is_valid()); |
669 EXPECT_EQ("http://www.bar.com/webhp?a=b&strk", instant_url.spec()); | 655 EXPECT_EQ("http://www.bar.com/webhp?a=b&strk", instant_url.spec()); |
670 } | 656 } |
671 | 657 |
672 TEST_F(SearchTest, ShouldPrefetchSearchResults_InstantExtendedAPIEnabled) { | 658 TEST_F(SearchTest, ShouldPrefetchSearchResults_InstantExtendedAPIEnabled) { |
673 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( | 659 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( |
674 "EmbeddedSearch", | 660 "EmbeddedSearch", |
675 "Group1 espv:2 prefetch_results:1")); | 661 "Group1 espv:2 prefetch_results:1")); |
676 EXPECT_TRUE(ShouldPrefetchSearchResults()); | 662 EXPECT_TRUE(ShouldPrefetchSearchResults()); |
677 #if defined(OS_IOS) || defined(OS_ANDROID) | 663 #if defined(OS_IOS) || defined(OS_ANDROID) |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
830 | 816 |
831 TEST_F(SearchTest, IsNTPURL) { | 817 TEST_F(SearchTest, IsNTPURL) { |
832 GURL invalid_url; | 818 GURL invalid_url; |
833 GURL ntp_url(chrome::kChromeUINewTabURL); | 819 GURL ntp_url(chrome::kChromeUINewTabURL); |
834 GURL local_ntp_url(GetLocalInstantURL(profile())); | 820 GURL local_ntp_url(GetLocalInstantURL(profile())); |
835 | 821 |
836 EXPECT_FALSE(chrome::IsNTPURL(invalid_url, profile())); | 822 EXPECT_FALSE(chrome::IsNTPURL(invalid_url, profile())); |
837 // No margin. | 823 // No margin. |
838 EnableQueryExtractionForTesting(); | 824 EnableQueryExtractionForTesting(); |
839 profile()->GetPrefs()->SetBoolean(prefs::kSearchSuggestEnabled, true); | 825 profile()->GetPrefs()->SetBoolean(prefs::kSearchSuggestEnabled, true); |
840 GURL remote_ntp_url(GetInstantURL(profile(), kDisableStartMargin, false)); | 826 GURL remote_ntp_url(GetInstantURL(profile(), false)); |
841 GURL search_url_with_search_terms("https://foo.com/url?strk&bar=abc"); | 827 GURL search_url_with_search_terms("https://foo.com/url?strk&bar=abc"); |
842 GURL search_url_without_search_terms("https://foo.com/url?strk&bar"); | 828 GURL search_url_without_search_terms("https://foo.com/url?strk&bar"); |
843 | 829 |
844 EXPECT_FALSE(chrome::IsNTPURL(ntp_url, profile())); | 830 EXPECT_FALSE(chrome::IsNTPURL(ntp_url, profile())); |
845 EXPECT_TRUE(chrome::IsNTPURL(local_ntp_url, profile())); | 831 EXPECT_TRUE(chrome::IsNTPURL(local_ntp_url, profile())); |
846 EXPECT_TRUE(chrome::IsNTPURL(remote_ntp_url, profile())); | 832 EXPECT_TRUE(chrome::IsNTPURL(remote_ntp_url, profile())); |
847 EXPECT_FALSE(chrome::IsNTPURL(search_url_with_search_terms, profile())); | 833 EXPECT_FALSE(chrome::IsNTPURL(search_url_with_search_terms, profile())); |
848 EXPECT_TRUE(chrome::IsNTPURL(search_url_without_search_terms, profile())); | 834 EXPECT_TRUE(chrome::IsNTPURL(search_url_without_search_terms, profile())); |
849 | 835 |
850 EXPECT_FALSE(chrome::IsNTPURL(ntp_url, NULL)); | 836 EXPECT_FALSE(chrome::IsNTPURL(ntp_url, NULL)); |
(...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1213 } | 1199 } |
1214 | 1200 |
1215 TEST_F(OriginChipTest, CommandLineOnSrp) { | 1201 TEST_F(OriginChipTest, CommandLineOnSrp) { |
1216 CommandLine::ForCurrentProcess()->AppendSwitch( | 1202 CommandLine::ForCurrentProcess()->AppendSwitch( |
1217 switches::kEnableOriginChipOnSrp); | 1203 switches::kEnableOriginChipOnSrp); |
1218 EXPECT_TRUE(ShouldDisplayOriginChip()); | 1204 EXPECT_TRUE(ShouldDisplayOriginChip()); |
1219 EXPECT_EQ(ORIGIN_CHIP_ON_SRP, GetOriginChipCondition()); | 1205 EXPECT_EQ(ORIGIN_CHIP_ON_SRP, GetOriginChipCondition()); |
1220 } | 1206 } |
1221 | 1207 |
1222 } // namespace chrome | 1208 } // namespace chrome |
OLD | NEW |