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

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

Issue 73613002: InstantExtended: remove old flags, add new flag for query extraction. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix typo Created 7 years, 1 month 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
« no previous file with comments | « chrome/browser/search/search.cc ('k') | chrome/browser/search_engines/template_url.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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"
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 histogram_ = base::StatisticsRecorder::FindHistogram( 225 histogram_ = base::StatisticsRecorder::FindHistogram(
226 "InstantExtended.OptInState"); 226 "InstantExtended.OptInState");
227 } 227 }
228 return histogram_; 228 return histogram_;
229 } 229 }
230 base::HistogramBase* histogram_; 230 base::HistogramBase* histogram_;
231 scoped_ptr<base::FieldTrialList> field_trial_list_; 231 scoped_ptr<base::FieldTrialList> field_trial_list_;
232 std::vector<int> previous_metrics_count_; 232 std::vector<int> previous_metrics_count_;
233 }; 233 };
234 234
235 TEST_F(InstantExtendedAPIEnabledTest, EnabledViaCommandLineFlag) {
236 GetCommandLine()->AppendSwitch(switches::kEnableInstantExtendedAPI);
237 EXPECT_TRUE(IsInstantExtendedAPIEnabled());
238 #if defined(OS_IOS) || defined(OS_ANDROID)
239 EXPECT_EQ(1ul, EmbeddedSearchPageVersion());
240 #else
241 EXPECT_EQ(2ul, EmbeddedSearchPageVersion());
242 #endif
243 ValidateMetrics(INSTANT_EXTENDED_OPT_IN);
244 }
245
246 TEST_F(InstantExtendedAPIEnabledTest, EnabledViaFinchFlag) { 235 TEST_F(InstantExtendedAPIEnabledTest, EnabledViaFinchFlag) {
247 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch", 236 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch",
248 "Group1 espv:42")); 237 "Group1 espv:42"));
249 EXPECT_TRUE(IsInstantExtendedAPIEnabled()); 238 EXPECT_TRUE(IsInstantExtendedAPIEnabled());
250 EXPECT_EQ(42ul, EmbeddedSearchPageVersion()); 239 EXPECT_EQ(42ul, EmbeddedSearchPageVersion());
251 ValidateMetrics(INSTANT_EXTENDED_NOT_SET); 240 ValidateMetrics(INSTANT_EXTENDED_NOT_SET);
252 } 241 }
253 242
254 TEST_F(InstantExtendedAPIEnabledTest, DisabledViaCommandLineFlag) {
255 GetCommandLine()->AppendSwitch(switches::kDisableInstantExtendedAPI);
256 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch",
257 "Group1 espv:2"));
258 EXPECT_FALSE(IsInstantExtendedAPIEnabled());
259 EXPECT_EQ(0ul, EmbeddedSearchPageVersion());
260 ValidateMetrics(INSTANT_EXTENDED_OPT_OUT);
261 }
262
263 typedef InstantExtendedAPIEnabledTest ShouldHideTopVerbatimTest; 243 typedef InstantExtendedAPIEnabledTest ShouldHideTopVerbatimTest;
264 244
265 TEST_F(ShouldHideTopVerbatimTest, DoNotHideByDefault) { 245 TEST_F(ShouldHideTopVerbatimTest, DoNotHideByDefault) {
266 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch", 246 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch",
267 "Control")); 247 "Control"));
268 EXPECT_FALSE(ShouldHideTopVerbatimMatch()); 248 EXPECT_FALSE(ShouldHideTopVerbatimMatch());
269 } 249 }
270 250
271 TEST_F(ShouldHideTopVerbatimTest, DoNotHideInInstantExtended) { 251 TEST_F(ShouldHideTopVerbatimTest, DoNotHideInInstantExtended) {
272 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch", 252 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch",
(...skipping 12 matching lines...) Expand all
285 "EmbeddedSearch", "Controll1 hide_verbatim:1")); 265 "EmbeddedSearch", "Controll1 hide_verbatim:1"));
286 EXPECT_TRUE(ShouldHideTopVerbatimMatch()); 266 EXPECT_TRUE(ShouldHideTopVerbatimMatch());
287 } 267 }
288 268
289 TEST_F(ShouldHideTopVerbatimTest, DisableByFlag) { 269 TEST_F(ShouldHideTopVerbatimTest, DisableByFlag) {
290 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch", 270 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch",
291 "Group1 hide_verbatim:0")); 271 "Group1 hide_verbatim:0"));
292 EXPECT_FALSE(ShouldHideTopVerbatimMatch()); 272 EXPECT_FALSE(ShouldHideTopVerbatimMatch());
293 } 273 }
294 274
295 typedef InstantExtendedAPIEnabledTest ShouldSuppressInstantExtendedOnSRPTest;
296
297 TEST_F(ShouldSuppressInstantExtendedOnSRPTest, NotSet) {
298 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch",
299 "Group1 espv:2"));
300 EXPECT_TRUE(ShouldSuppressInstantExtendedOnSRP());
301 EXPECT_TRUE(IsInstantExtendedAPIEnabled());
302 EXPECT_FALSE(IsQueryExtractionEnabled());
303 EXPECT_EQ(2ul, EmbeddedSearchPageVersion());
304 }
305
306 TEST_F(ShouldSuppressInstantExtendedOnSRPTest, NotSuppressOnSRP) {
307 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
308 "EmbeddedSearch", "Group1 espv:2 suppress_on_srp:0"));
309 EXPECT_FALSE(ShouldSuppressInstantExtendedOnSRP());
310 EXPECT_TRUE(IsInstantExtendedAPIEnabled());
311 EXPECT_TRUE(IsQueryExtractionEnabled());
312 EXPECT_EQ(2ul, EmbeddedSearchPageVersion());
313 }
314
315 TEST_F(ShouldSuppressInstantExtendedOnSRPTest, SuppressOnSRP) {
316 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
317 "EmbeddedSearch", "Group1 espv:2 suppress_on_srp:1"));
318 EXPECT_TRUE(ShouldSuppressInstantExtendedOnSRP());
319 EXPECT_TRUE(IsInstantExtendedAPIEnabled());
320 EXPECT_FALSE(IsQueryExtractionEnabled());
321 EXPECT_EQ(2ul, EmbeddedSearchPageVersion());
322 }
323
324 typedef InstantExtendedAPIEnabledTest DisplaySearchButtonTest; 275 typedef InstantExtendedAPIEnabledTest DisplaySearchButtonTest;
325 276
326 TEST_F(DisplaySearchButtonTest, NotSet) { 277 TEST_F(DisplaySearchButtonTest, NotSet) {
327 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 278 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
328 "EmbeddedSearch", "Group1 espv:2")); 279 "EmbeddedSearch", "Group1 espv:2"));
329 EXPECT_EQ(DISPLAY_SEARCH_BUTTON_NEVER, GetDisplaySearchButtonConditions()); 280 EXPECT_EQ(DISPLAY_SEARCH_BUTTON_NEVER, GetDisplaySearchButtonConditions());
330 } 281 }
331 282
332 TEST_F(DisplaySearchButtonTest, Never) { 283 TEST_F(DisplaySearchButtonTest, Never) {
333 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 284 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
449 scoped_ptr<base::FieldTrialList> field_trial_list_; 400 scoped_ptr<base::FieldTrialList> field_trial_list_;
450 }; 401 };
451 402
452 struct SearchTestCase { 403 struct SearchTestCase {
453 const char* url; 404 const char* url;
454 bool expected_result; 405 bool expected_result;
455 const char* comment; 406 const char* comment;
456 }; 407 };
457 408
458 TEST_F(SearchTest, ShouldAssignURLToInstantRendererExtendedEnabled) { 409 TEST_F(SearchTest, ShouldAssignURLToInstantRendererExtendedEnabled) {
459 EnableInstantExtendedAPIForTesting(); 410 EnableQueryExtractionForTesting();
460 411
461 const SearchTestCase kTestCases[] = { 412 const SearchTestCase kTestCases[] = {
462 {chrome::kChromeSearchLocalNtpUrl, true, ""}, 413 {chrome::kChromeSearchLocalNtpUrl, true, ""},
463 {"https://foo.com/instant?strk", true, ""}, 414 {"https://foo.com/instant?strk", true, ""},
464 {"https://foo.com/instant#strk", true, ""}, 415 {"https://foo.com/instant#strk", true, ""},
465 {"https://foo.com/instant?strk=0", true, ""}, 416 {"https://foo.com/instant?strk=0", true, ""},
466 {"https://foo.com/url?strk", true, ""}, 417 {"https://foo.com/url?strk", true, ""},
467 {"https://foo.com/alt?strk", true, ""}, 418 {"https://foo.com/alt?strk", true, ""},
468 {"http://foo.com/instant", false, "Non-HTTPS"}, 419 {"http://foo.com/instant", false, "Non-HTTPS"},
469 {"http://foo.com/instant?strk", false, "Non-HTTPS"}, 420 {"http://foo.com/instant?strk", false, "Non-HTTPS"},
(...skipping 30 matching lines...) Expand all
500 451
501 for (size_t i = 0; i < arraysize(kTestCases); ++i) { 452 for (size_t i = 0; i < arraysize(kTestCases); ++i) {
502 const SearchTestCase& test = kTestCases[i]; 453 const SearchTestCase& test = kTestCases[i];
503 EXPECT_EQ(test.expected_result, 454 EXPECT_EQ(test.expected_result,
504 ShouldAssignURLToInstantRenderer(GURL(test.url), profile())) 455 ShouldAssignURLToInstantRenderer(GURL(test.url), profile()))
505 << test.url << " " << test.comment; 456 << test.url << " " << test.comment;
506 } 457 }
507 } 458 }
508 459
509 TEST_F(SearchTest, ShouldUseProcessPerSiteForInstantURL) { 460 TEST_F(SearchTest, ShouldUseProcessPerSiteForInstantURL) {
510 EnableInstantExtendedAPIForTesting(); 461 EnableQueryExtractionForTesting();
511 462
512 const SearchTestCase kTestCases[] = { 463 const SearchTestCase kTestCases[] = {
513 {"chrome-search://local-ntp", true, "Local NTP"}, 464 {"chrome-search://local-ntp", true, "Local NTP"},
514 {"chrome-search://online-ntp", true, "Online NTP"}, 465 {"chrome-search://online-ntp", true, "Online NTP"},
515 {"invalid-scheme://local-ntp", false, "Invalid Local NTP URL"}, 466 {"invalid-scheme://local-ntp", false, "Invalid Local NTP URL"},
516 {"invalid-scheme://online-ntp", false, "Invalid Online NTP URL"}, 467 {"invalid-scheme://online-ntp", false, "Invalid Online NTP URL"},
517 {"chrome-search://foo.com", false, "Search result page"}, 468 {"chrome-search://foo.com", false, "Search result page"},
518 {"https://foo.com/instant?strk", false, ""}, 469 {"https://foo.com/instant?strk", false, ""},
519 {"https://foo.com/instant#strk", false, ""}, 470 {"https://foo.com/instant#strk", false, ""},
520 {"https://foo.com/instant?strk=0", false, ""}, 471 {"https://foo.com/instant?strk=0", false, ""},
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
564 "https://foo.com/url?strk", true, true }, 515 "https://foo.com/url?strk", true, true },
565 {"SRP -> Regular", 516 {"SRP -> Regular",
566 "https://foo.com/url?strk", true, 517 "https://foo.com/url?strk", true,
567 "https://foo.com/other", false, false }, 518 "https://foo.com/other", false, false },
568 {"Regular -> SRP", 519 {"Regular -> SRP",
569 "https://foo.com/other", false, 520 "https://foo.com/other", false,
570 "https://foo.com/url?strk", true, false }, 521 "https://foo.com/url?strk", true, false },
571 }; 522 };
572 523
573 TEST_F(SearchTest, ProcessIsolation) { 524 TEST_F(SearchTest, ProcessIsolation) {
574 EnableInstantExtendedAPIForTesting(); 525 EnableQueryExtractionForTesting();
575 526
576 for (size_t i = 0; i < arraysize(kProcessIsolationTestCases); ++i) { 527 for (size_t i = 0; i < arraysize(kProcessIsolationTestCases); ++i) {
577 const ProcessIsolationTestCase& test = kProcessIsolationTestCases[i]; 528 const ProcessIsolationTestCase& test = kProcessIsolationTestCases[i];
578 AddTab(browser(), GURL("chrome://blank")); 529 AddTab(browser(), GURL("chrome://blank"));
579 const content::WebContents* contents = 530 const content::WebContents* contents =
580 browser()->tab_strip_model()->GetActiveWebContents(); 531 browser()->tab_strip_model()->GetActiveWebContents();
581 532
582 // Navigate to start URL. 533 // Navigate to start URL.
583 NavigateAndCommitActiveTab(GURL(test.start_url)); 534 NavigateAndCommitActiveTab(GURL(test.start_url));
584 EXPECT_EQ(test.start_in_instant_process, InInstantProcess(contents)) 535 EXPECT_EQ(test.start_in_instant_process, InInstantProcess(contents))
(...skipping 18 matching lines...) Expand all
603 EXPECT_EQ(test.same_site_instance, 554 EXPECT_EQ(test.same_site_instance,
604 start_rvh == contents->GetRenderViewHost()) 555 start_rvh == contents->GetRenderViewHost())
605 << test.description; 556 << test.description;
606 EXPECT_EQ(test.same_site_instance, 557 EXPECT_EQ(test.same_site_instance,
607 start_rph == contents->GetRenderProcessHost()) 558 start_rph == contents->GetRenderProcessHost())
608 << test.description; 559 << test.description;
609 } 560 }
610 } 561 }
611 562
612 TEST_F(SearchTest, ProcessIsolation_RendererInitiated) { 563 TEST_F(SearchTest, ProcessIsolation_RendererInitiated) {
613 EnableInstantExtendedAPIForTesting(); 564 EnableQueryExtractionForTesting();
614 565
615 for (size_t i = 0; i < arraysize(kProcessIsolationTestCases); ++i) { 566 for (size_t i = 0; i < arraysize(kProcessIsolationTestCases); ++i) {
616 const ProcessIsolationTestCase& test = kProcessIsolationTestCases[i]; 567 const ProcessIsolationTestCase& test = kProcessIsolationTestCases[i];
617 AddTab(browser(), GURL("chrome://blank")); 568 AddTab(browser(), GURL("chrome://blank"));
618 content::WebContents* contents = 569 content::WebContents* contents =
619 browser()->tab_strip_model()->GetActiveWebContents(); 570 browser()->tab_strip_model()->GetActiveWebContents();
620 571
621 // Navigate to start URL. 572 // Navigate to start URL.
622 NavigateAndCommitActiveTab(GURL(test.start_url)); 573 NavigateAndCommitActiveTab(GURL(test.start_url));
623 EXPECT_EQ(test.start_in_instant_process, InInstantProcess(contents)) 574 EXPECT_EQ(test.start_in_instant_process, InInstantProcess(contents))
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
668 {"https://foo.com/url?strk&bar=abc", false, "Has query terms"}, 619 {"https://foo.com/url?strk&bar=abc", false, "Has query terms"},
669 {"http://foo.com/instant?strk=1", false, "Insecure URL"}, 620 {"http://foo.com/instant?strk=1", false, "Insecure URL"},
670 {"https://foo.com/instant", false, "No search term replacement"}, 621 {"https://foo.com/instant", false, "No search term replacement"},
671 {"chrome://blank/", false, "Chrome scheme"}, 622 {"chrome://blank/", false, "Chrome scheme"},
672 {"chrome-search://foo", false, "Chrome-search scheme"}, 623 {"chrome-search://foo", false, "Chrome-search scheme"},
673 {chrome::kChromeSearchLocalNtpUrl, true, "Local new tab page"}, 624 {chrome::kChromeSearchLocalNtpUrl, true, "Local new tab page"},
674 {"https://bar.com/instant?strk=1", false, "Random non-search page"}, 625 {"https://bar.com/instant?strk=1", false, "Random non-search page"},
675 }; 626 };
676 627
677 TEST_F(SearchTest, InstantNTPExtendedEnabled) { 628 TEST_F(SearchTest, InstantNTPExtendedEnabled) {
678 EnableInstantExtendedAPIForTesting(); 629 EnableQueryExtractionForTesting();
679 // TODO(samarth): update test cases to use cacheable NTP URLs and remove this. 630 // TODO(samarth): update test cases to use cacheable NTP URLs and remove this.
680 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 631 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
681 "InstantExtended", "Group1 use_cacheable_ntp:0")); 632 "InstantExtended", "Group1 use_cacheable_ntp:0"));
682 AddTab(browser(), GURL("chrome://blank")); 633 AddTab(browser(), GURL("chrome://blank"));
683 for (size_t i = 0; i < arraysize(kInstantNTPTestCases); ++i) { 634 for (size_t i = 0; i < arraysize(kInstantNTPTestCases); ++i) {
684 const SearchTestCase& test = kInstantNTPTestCases[i]; 635 const SearchTestCase& test = kInstantNTPTestCases[i];
685 NavigateAndCommitActiveTab(GURL(test.url)); 636 NavigateAndCommitActiveTab(GURL(test.url));
686 const content::WebContents* contents = 637 const content::WebContents* contents =
687 browser()->tab_strip_model()->GetWebContentsAt(0); 638 browser()->tab_strip_model()->GetWebContentsAt(0);
688 EXPECT_EQ(test.expected_result, IsInstantNTP(contents)) 639 EXPECT_EQ(test.expected_result, IsInstantNTP(contents))
689 << test.url << " " << test.comment; 640 << test.url << " " << test.comment;
690 } 641 }
691 } 642 }
692 643
693 TEST_F(SearchTest, InstantNTPCustomNavigationEntry) { 644 TEST_F(SearchTest, InstantNTPCustomNavigationEntry) {
694 EnableInstantExtendedAPIForTesting(); 645 EnableQueryExtractionForTesting();
695 // TODO(samarth): update test cases to use cacheable NTP URLs and remove this. 646 // TODO(samarth): update test cases to use cacheable NTP URLs and remove this.
696 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 647 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
697 "InstantExtended", "Group1 use_cacheable_ntp:0")); 648 "InstantExtended", "Group1 use_cacheable_ntp:0"));
698 AddTab(browser(), GURL("chrome://blank")); 649 AddTab(browser(), GURL("chrome://blank"));
699 for (size_t i = 0; i < arraysize(kInstantNTPTestCases); ++i) { 650 for (size_t i = 0; i < arraysize(kInstantNTPTestCases); ++i) {
700 const SearchTestCase& test = kInstantNTPTestCases[i]; 651 const SearchTestCase& test = kInstantNTPTestCases[i];
701 NavigateAndCommitActiveTab(GURL(test.url)); 652 NavigateAndCommitActiveTab(GURL(test.url));
702 content::WebContents* contents = 653 content::WebContents* contents =
703 browser()->tab_strip_model()->GetWebContentsAt(0); 654 browser()->tab_strip_model()->GetWebContentsAt(0);
704 content::NavigationController& controller = contents->GetController(); 655 content::NavigationController& controller = contents->GetController();
705 controller.SetTransientEntry( 656 controller.SetTransientEntry(
706 controller.CreateNavigationEntry(GURL("chrome://blank"), 657 controller.CreateNavigationEntry(GURL("chrome://blank"),
707 content::Referrer(), 658 content::Referrer(),
708 content::PAGE_TRANSITION_LINK, 659 content::PAGE_TRANSITION_LINK,
709 false, 660 false,
710 std::string(), 661 std::string(),
711 contents->GetBrowserContext())); 662 contents->GetBrowserContext()));
712 // The active entry is chrome://blank and not an NTP. 663 // The active entry is chrome://blank and not an NTP.
713 EXPECT_FALSE(IsInstantNTP(contents)); 664 EXPECT_FALSE(IsInstantNTP(contents));
714 EXPECT_EQ(test.expected_result, 665 EXPECT_EQ(test.expected_result,
715 NavEntryIsInstantNTP(contents, 666 NavEntryIsInstantNTP(contents,
716 controller.GetLastCommittedEntry())) 667 controller.GetLastCommittedEntry()))
717 << test.url << " " << test.comment; 668 << test.url << " " << test.comment;
718 } 669 }
719 } 670 }
720 671
721 TEST_F(SearchTest, InstantCacheableNTPNavigationEntry) { 672 TEST_F(SearchTest, InstantCacheableNTPNavigationEntry) {
722 EnableInstantExtendedAPIForTesting();
723 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 673 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
724 "EmbeddedSearch", "Group1 use_cacheable_ntp:1")); 674 "EmbeddedSearch", "Group1 use_cacheable_ntp:1"));
725 675
726 AddTab(browser(), GURL("chrome://blank")); 676 AddTab(browser(), GURL("chrome://blank"));
727 content::WebContents* contents = 677 content::WebContents* contents =
728 browser()->tab_strip_model()->GetWebContentsAt(0); 678 browser()->tab_strip_model()->GetWebContentsAt(0);
729 content::NavigationController& controller = contents->GetController(); 679 content::NavigationController& controller = contents->GetController();
730 // Local NTP. 680 // Local NTP.
731 NavigateAndCommitActiveTab(GURL(chrome::kChromeSearchLocalNtpUrl)); 681 NavigateAndCommitActiveTab(GURL(chrome::kChromeSearchLocalNtpUrl));
732 EXPECT_TRUE(NavEntryIsInstantNTP(contents, 682 EXPECT_TRUE(NavEntryIsInstantNTP(contents,
733 controller.GetLastCommittedEntry())); 683 controller.GetLastCommittedEntry()));
734 // Instant page is not cacheable NTP. 684 // Instant page is not cacheable NTP.
735 NavigateAndCommitActiveTab(GetInstantURL(profile(), kDisableStartMargin, 685 NavigateAndCommitActiveTab(GetInstantURL(profile(), kDisableStartMargin,
736 false)); 686 false));
737 EXPECT_FALSE(NavEntryIsInstantNTP(contents, 687 EXPECT_FALSE(NavEntryIsInstantNTP(contents,
738 controller.GetLastCommittedEntry())); 688 controller.GetLastCommittedEntry()));
739 // Test Cacheable NTP 689 // Test Cacheable NTP
740 NavigateAndCommitActiveTab(chrome::GetNewTabPageURL(profile())); 690 NavigateAndCommitActiveTab(chrome::GetNewTabPageURL(profile()));
741 EXPECT_TRUE(NavEntryIsInstantNTP(contents, 691 EXPECT_TRUE(NavEntryIsInstantNTP(contents,
742 controller.GetLastCommittedEntry())); 692 controller.GetLastCommittedEntry()));
743 } 693 }
744 694
745 TEST_F(SearchTest, UseLocalNTPInIncognito) { 695 TEST_F(SearchTest, UseLocalNTPInIncognito) {
746 EnableInstantExtendedAPIForTesting();
747 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 696 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
748 "EmbeddedSearch", "Group1 use_cacheable_ntp:1")); 697 "EmbeddedSearch", "Group1 use_cacheable_ntp:1"));
749 EXPECT_EQ(GURL(), chrome::GetNewTabPageURL( 698 EXPECT_EQ(GURL(), chrome::GetNewTabPageURL(
750 profile()->GetOffTheRecordProfile())); 699 profile()->GetOffTheRecordProfile()));
751 } 700 }
752 701
753 TEST_F(SearchTest, UseLocalNTPIfNTPURLIsInsecure) { 702 TEST_F(SearchTest, UseLocalNTPIfNTPURLIsInsecure) {
754 EnableInstantExtendedAPIForTesting();
755 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 703 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
756 "EmbeddedSearch", "Group1 use_cacheable_ntp:1")); 704 "EmbeddedSearch", "Group1 use_cacheable_ntp:1"));
757 // Set an insecure new tab page URL and verify that it's ignored. 705 // Set an insecure new tab page URL and verify that it's ignored.
758 SetSearchProvider(true, true); 706 SetSearchProvider(true, true);
759 EXPECT_EQ(GURL(chrome::kChromeSearchLocalNtpUrl), 707 EXPECT_EQ(GURL(chrome::kChromeSearchLocalNtpUrl),
760 chrome::GetNewTabPageURL(profile())); 708 chrome::GetNewTabPageURL(profile()));
761 } 709 }
762 710
763 TEST_F(SearchTest, UseLocalNTPIfNTPURLIsNotSet) { 711 TEST_F(SearchTest, UseLocalNTPIfNTPURLIsNotSet) {
764 EnableInstantExtendedAPIForTesting();
765 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 712 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
766 "EmbeddedSearch", "Group1 use_cacheable_ntp:1")); 713 "EmbeddedSearch", "Group1 use_cacheable_ntp:1"));
767 // Set an insecure new tab page URL and verify that it's ignored. 714 // Set an insecure new tab page URL and verify that it's ignored.
768 SetSearchProvider(false, true); 715 SetSearchProvider(false, true);
769 EXPECT_EQ(GURL(chrome::kChromeSearchLocalNtpUrl), 716 EXPECT_EQ(GURL(chrome::kChromeSearchLocalNtpUrl),
770 chrome::GetNewTabPageURL(profile())); 717 chrome::GetNewTabPageURL(profile()));
771 } 718 }
772 719
773 TEST_F(SearchTest, UseLocalNTPIfNTPURLIsBlockedForSupervisedUser) { 720 TEST_F(SearchTest, UseLocalNTPIfNTPURLIsBlockedForSupervisedUser) {
774 EnableInstantExtendedAPIForTesting();
775 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 721 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
776 "EmbeddedSearch", "Group1 use_cacheable_ntp:1")); 722 "EmbeddedSearch", "Group1 use_cacheable_ntp:1"));
777 723
778 // Block access to foo.com in the URL filter. 724 // Block access to foo.com in the URL filter.
779 ManagedUserService* managed_user_service = 725 ManagedUserService* managed_user_service =
780 ManagedUserServiceFactory::GetForProfile(profile()); 726 ManagedUserServiceFactory::GetForProfile(profile());
781 ManagedModeURLFilter* url_filter = 727 ManagedModeURLFilter* url_filter =
782 managed_user_service->GetURLFilterForUIThread(); 728 managed_user_service->GetURLFilterForUIThread();
783 std::map<std::string, bool> hosts; 729 std::map<std::string, bool> hosts;
784 hosts["foo.com"] = false; 730 hosts["foo.com"] = false;
785 url_filter->SetManualHosts(&hosts); 731 url_filter->SetManualHosts(&hosts);
786 732
787 EXPECT_EQ(GURL(chrome::kChromeSearchLocalNtpUrl), 733 EXPECT_EQ(GURL(chrome::kChromeSearchLocalNtpUrl),
788 chrome::GetNewTabPageURL(profile())); 734 chrome::GetNewTabPageURL(profile()));
789 EXPECT_EQ(GURL(), GetInstantURL(profile(), kDisableStartMargin, false)); 735 EXPECT_EQ(GURL(), GetInstantURL(profile(), kDisableStartMargin, false));
790 } 736 }
791 737
792 TEST_F(SearchTest, GetInstantURL) { 738 TEST_F(SearchTest, GetInstantURL) {
793 // Enable Instant. Still no Instant URL because "strk" is missing. 739 // No Instant URL because "strk" is missing.
794 EnableInstantExtendedAPIForTesting();
795 SetDefaultInstantTemplateUrl(false); 740 SetDefaultInstantTemplateUrl(false);
796 EXPECT_EQ(GURL(), GetInstantURL(profile(), kDisableStartMargin, false)); 741 EXPECT_EQ(GURL(), GetInstantURL(profile(), kDisableStartMargin, false));
797 742
798 // Set an Instant URL with a valid search terms replacement key. 743 // Set an Instant URL with a valid search terms replacement key.
799 SetDefaultInstantTemplateUrl(true); 744 SetDefaultInstantTemplateUrl(true);
800 745
801 // Now there should be a valid Instant URL. Note the HTTPS "upgrade". 746 // Now there should be a valid Instant URL. Note the HTTPS "upgrade".
802 EXPECT_EQ(GURL("https://foo.com/instant?foo=foo#foo=foo&strk"), 747 EXPECT_EQ(GURL("https://foo.com/instant?foo=foo#foo=foo&strk"),
803 GetInstantURL(profile(), kDisableStartMargin, false)); 748 GetInstantURL(profile(), kDisableStartMargin, false));
804 749
805 // Enable suggest. No difference. 750 // Enable suggest. No difference.
806 profile()->GetPrefs()->SetBoolean(prefs::kSearchSuggestEnabled, true); 751 profile()->GetPrefs()->SetBoolean(prefs::kSearchSuggestEnabled, true);
807 EXPECT_EQ(GURL("https://foo.com/instant?foo=foo#foo=foo&strk"), 752 EXPECT_EQ(GURL("https://foo.com/instant?foo=foo#foo=foo&strk"),
808 GetInstantURL(profile(), kDisableStartMargin, false)); 753 GetInstantURL(profile(), kDisableStartMargin, false));
809 754
810 // Disable suggest. No Instant URL. 755 // Disable suggest. No Instant URL.
811 profile()->GetPrefs()->SetBoolean(prefs::kSearchSuggestEnabled, false); 756 profile()->GetPrefs()->SetBoolean(prefs::kSearchSuggestEnabled, false);
812 EXPECT_EQ(GURL(), GetInstantURL(profile(), kDisableStartMargin, false)); 757 EXPECT_EQ(GURL(), GetInstantURL(profile(), kDisableStartMargin, false));
813 } 758 }
814 759
815 TEST_F(SearchTest, StartMarginCGI) { 760 TEST_F(SearchTest, StartMarginCGI) {
816 // No margin. 761 // No margin.
817 EnableInstantExtendedAPIForTesting();
818 profile()->GetPrefs()->SetBoolean(prefs::kSearchSuggestEnabled, true); 762 profile()->GetPrefs()->SetBoolean(prefs::kSearchSuggestEnabled, true);
819 763
820 EXPECT_EQ(GURL("https://foo.com/instant?foo=foo#foo=foo&strk"), 764 EXPECT_EQ(GURL("https://foo.com/instant?foo=foo#foo=foo&strk"),
821 GetInstantURL(profile(), kDisableStartMargin, false)); 765 GetInstantURL(profile(), kDisableStartMargin, false));
822 766
823 // With start margin. 767 // With start margin.
824 EXPECT_EQ(GURL("https://foo.com/instant?es_sm=10&foo=foo#foo=foo&strk"), 768 EXPECT_EQ(GURL("https://foo.com/instant?es_sm=10&foo=foo#foo=foo&strk"),
825 GetInstantURL(profile(), 10, false)); 769 GetInstantURL(profile(), 10, false));
826 } 770 }
827 771
828 TEST_F(SearchTest, InstantSearchEnabledCGI) { 772 TEST_F(SearchTest, InstantSearchEnabledCGI) {
829 EnableInstantExtendedAPIForTesting();
830
831 // Disable Instant Search. 773 // Disable Instant Search.
832 // Make sure {google:forceInstantResults} is not set in the Instant URL. 774 // Make sure {google:forceInstantResults} is not set in the Instant URL.
833 EXPECT_EQ(GURL("https://foo.com/instant?foo=foo#foo=foo&strk"), 775 EXPECT_EQ(GURL("https://foo.com/instant?foo=foo#foo=foo&strk"),
834 GetInstantURL(profile(), kDisableStartMargin, false)); 776 GetInstantURL(profile(), kDisableStartMargin, false));
835 777
836 // Enable Instant Search. 778 // Enable Instant Search.
837 // Make sure {google:forceInstantResults} is set in the Instant URL. 779 // Make sure {google:forceInstantResults} is set in the Instant URL.
838 EXPECT_EQ(GURL("https://foo.com/instant?ion=1&foo=foo#foo=foo&strk"), 780 EXPECT_EQ(GURL("https://foo.com/instant?ion=1&foo=foo#foo=foo&strk"),
839 GetInstantURL(profile(), kDisableStartMargin, true)); 781 GetInstantURL(profile(), kDisableStartMargin, true));
840 } 782 }
841 783
842 TEST_F(SearchTest, CommandLineOverrides) { 784 TEST_F(SearchTest, CommandLineOverrides) {
843 EnableInstantExtendedAPIForTesting();
844
845 GURL local_instant_url(GetLocalInstantURL(profile())); 785 GURL local_instant_url(GetLocalInstantURL(profile()));
846 EXPECT_EQ(GURL(chrome::kChromeSearchLocalNtpUrl), local_instant_url); 786 EXPECT_EQ(GURL(chrome::kChromeSearchLocalNtpUrl), local_instant_url);
847 787
848 TemplateURLService* template_url_service = 788 TemplateURLService* template_url_service =
849 TemplateURLServiceFactory::GetForProfile(profile()); 789 TemplateURLServiceFactory::GetForProfile(profile());
850 TemplateURLData data; 790 TemplateURLData data;
851 data.SetURL("{google:baseURL}search?q={searchTerms}"); 791 data.SetURL("{google:baseURL}search?q={searchTerms}");
852 data.instant_url = "{google:baseURL}webhp?strk"; 792 data.instant_url = "{google:baseURL}webhp?strk";
853 data.search_terms_replacement_key = "strk"; 793 data.search_terms_replacement_key = "strk";
854 TemplateURL* template_url = new TemplateURL(profile(), data); 794 TemplateURL* template_url = new TemplateURL(profile(), data);
(...skipping 26 matching lines...) Expand all
881 // If we specify extra search query params, they should be inserted into the 821 // If we specify extra search query params, they should be inserted into the
882 // query portion of the instant URL. 822 // query portion of the instant URL.
883 CommandLine::ForCurrentProcess()->AppendSwitchASCII( 823 CommandLine::ForCurrentProcess()->AppendSwitchASCII(
884 switches::kExtraSearchQueryParams, "a=b"); 824 switches::kExtraSearchQueryParams, "a=b");
885 instant_url = GetInstantURL(profile(), kDisableStartMargin, false); 825 instant_url = GetInstantURL(profile(), kDisableStartMargin, false);
886 ASSERT_TRUE(instant_url.is_valid()); 826 ASSERT_TRUE(instant_url.is_valid());
887 EXPECT_EQ("http://www.bar.com/webhp?a=b&strk", instant_url.spec()); 827 EXPECT_EQ("http://www.bar.com/webhp?a=b&strk", instant_url.spec());
888 } 828 }
889 829
890 TEST_F(SearchTest, ShouldShowInstantNTP_Default) { 830 TEST_F(SearchTest, ShouldShowInstantNTP_Default) {
891 EnableInstantExtendedAPIForTesting();
892 EXPECT_FALSE(ShouldShowInstantNTP()); 831 EXPECT_FALSE(ShouldShowInstantNTP());
893 } 832 }
894 833
895 TEST_F(SearchTest, ShouldShowInstantNTP_DisabledViaFinch) { 834 TEST_F(SearchTest, ShouldShowInstantNTP_DisabledViaFinch) {
896 EnableInstantExtendedAPIForTesting();
897 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 835 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
898 "EmbeddedSearch", "Group1 show_ntp:0")); 836 "EmbeddedSearch", "Group1 show_ntp:0"));
899 EXPECT_FALSE(ShouldShowInstantNTP()); 837 EXPECT_FALSE(ShouldShowInstantNTP());
900 } 838 }
901 839
902 TEST_F(SearchTest, ShouldShowInstantNTP_DisabledByUseCacheableNTPFinchFlag) { 840 TEST_F(SearchTest, ShouldShowInstantNTP_DisabledByUseCacheableNTPFinchFlag) {
903 EnableInstantExtendedAPIForTesting();
904 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 841 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
905 "EmbeddedSearch", "Group1 use_cacheable_ntp:1")); 842 "EmbeddedSearch", "Group1 use_cacheable_ntp:1"));
906 EXPECT_FALSE(ShouldShowInstantNTP()); 843 EXPECT_FALSE(ShouldShowInstantNTP());
907 } 844 }
908 845
909 TEST_F(SearchTest, ShouldUseCacheableNTP_Default) { 846 TEST_F(SearchTest, ShouldUseCacheableNTP_Default) {
910 EnableInstantExtendedAPIForTesting();
911 EXPECT_TRUE(ShouldUseCacheableNTP()); 847 EXPECT_TRUE(ShouldUseCacheableNTP());
912 } 848 }
913 849
914 TEST_F(SearchTest, ShouldUseCacheableNTP_EnabledViaFinch) { 850 TEST_F(SearchTest, ShouldUseCacheableNTP_EnabledViaFinch) {
915 EnableInstantExtendedAPIForTesting();
916 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 851 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
917 "EmbeddedSearch", "Group1 use_cacheable_ntp:1")); 852 "EmbeddedSearch", "Group1 use_cacheable_ntp:1"));
918 EXPECT_TRUE(ShouldUseCacheableNTP()); 853 EXPECT_TRUE(ShouldUseCacheableNTP());
919 } 854 }
920 855
921 TEST_F(SearchTest, ShouldPrefetchSearchResults_Default) { 856 TEST_F(SearchTest, ShouldPrefetchSearchResults_Default) {
922 EXPECT_FALSE(ShouldPrefetchSearchResults()); 857 EXPECT_FALSE(ShouldPrefetchSearchResults());
923 } 858 }
924 859
925 TEST_F(SearchTest, ShouldPrefetchSearchResults_InstantExtendedAPIEnabled) { 860 TEST_F(SearchTest, ShouldPrefetchSearchResults_InstantExtendedAPIEnabled) {
926 EnableInstantExtendedAPIForTesting();
927 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 861 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
928 "EmbeddedSearch", 862 "EmbeddedSearch",
929 "Group1 espv:80 use_cacheable_ntp:1 prefetch_results:1")); 863 "Group1 espv:2 use_cacheable_ntp:1 prefetch_results:1"));
930 EXPECT_TRUE(ShouldPrefetchSearchResults()); 864 EXPECT_TRUE(ShouldPrefetchSearchResults());
931 #if defined(OS_IOS) || defined(OS_ANDROID) 865 #if defined(OS_IOS) || defined(OS_ANDROID)
932 EXPECT_EQ(1ul, EmbeddedSearchPageVersion()); 866 EXPECT_EQ(1ul, EmbeddedSearchPageVersion());
933 #else 867 #else
934 EXPECT_EQ(2ul, EmbeddedSearchPageVersion()); 868 EXPECT_EQ(2ul, EmbeddedSearchPageVersion());
935 #endif 869 #endif
936 } 870 }
937 871
938 TEST_F(SearchTest, ShouldPrefetchSearchResults_DisabledViaFinch) { 872 TEST_F(SearchTest, ShouldPrefetchSearchResults_DisabledViaFinch) {
939 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 873 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
(...skipping 11 matching lines...) Expand all
951 EXPECT_EQ(80ul, EmbeddedSearchPageVersion()); 885 EXPECT_EQ(80ul, EmbeddedSearchPageVersion());
952 } 886 }
953 887
954 TEST_F(SearchTest, IsNTPURL) { 888 TEST_F(SearchTest, IsNTPURL) {
955 GURL invalid_url; 889 GURL invalid_url;
956 GURL ntp_url(chrome::kChromeUINewTabURL); 890 GURL ntp_url(chrome::kChromeUINewTabURL);
957 GURL local_ntp_url(GetLocalInstantURL(profile())); 891 GURL local_ntp_url(GetLocalInstantURL(profile()));
958 892
959 EXPECT_FALSE(chrome::IsNTPURL(invalid_url, profile())); 893 EXPECT_FALSE(chrome::IsNTPURL(invalid_url, profile()));
960 // No margin. 894 // No margin.
961 EnableInstantExtendedAPIForTesting(); 895 EnableQueryExtractionForTesting();
962 profile()->GetPrefs()->SetBoolean(prefs::kSearchSuggestEnabled, true); 896 profile()->GetPrefs()->SetBoolean(prefs::kSearchSuggestEnabled, true);
963 GURL remote_ntp_url(GetInstantURL(profile(), kDisableStartMargin, false)); 897 GURL remote_ntp_url(GetInstantURL(profile(), kDisableStartMargin, false));
964 GURL search_url_with_search_terms("https://foo.com/url?strk&bar=abc"); 898 GURL search_url_with_search_terms("https://foo.com/url?strk&bar=abc");
965 GURL search_url_without_search_terms("https://foo.com/url?strk&bar"); 899 GURL search_url_without_search_terms("https://foo.com/url?strk&bar");
966 900
967 EXPECT_FALSE(chrome::IsNTPURL(ntp_url, profile())); 901 EXPECT_FALSE(chrome::IsNTPURL(ntp_url, profile()));
968 EXPECT_TRUE(chrome::IsNTPURL(local_ntp_url, profile())); 902 EXPECT_TRUE(chrome::IsNTPURL(local_ntp_url, profile()));
969 EXPECT_TRUE(chrome::IsNTPURL(remote_ntp_url, profile())); 903 EXPECT_TRUE(chrome::IsNTPURL(remote_ntp_url, profile()));
970 EXPECT_FALSE(chrome::IsNTPURL(search_url_with_search_terms, profile())); 904 EXPECT_FALSE(chrome::IsNTPURL(search_url_with_search_terms, profile()));
971 EXPECT_TRUE(chrome::IsNTPURL(search_url_without_search_terms, profile())); 905 EXPECT_TRUE(chrome::IsNTPURL(search_url_without_search_terms, profile()));
(...skipping 19 matching lines...) Expand all
991 // "prefetch_results" flag is enabled via field trials. 925 // "prefetch_results" flag is enabled via field trials.
992 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 926 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
993 "EmbeddedSearch", 927 "EmbeddedSearch",
994 "Group1 espv:80 use_cacheable_ntp:1 prefetch_results:1")); 928 "Group1 espv:80 use_cacheable_ntp:1 prefetch_results:1"));
995 EXPECT_TRUE(ShouldPrefetchSearchResults()); 929 EXPECT_TRUE(ShouldPrefetchSearchResults());
996 930
997 EXPECT_EQ(GURL("https://foo.com/instant?ion=1&foo=foo#foo=foo&strk"), 931 EXPECT_EQ(GURL("https://foo.com/instant?ion=1&foo=foo#foo=foo&strk"),
998 GetSearchResultPrefetchBaseURL(profile())); 932 GetSearchResultPrefetchBaseURL(profile()));
999 } 933 }
1000 934
935 typedef SearchTest IsQueryExtractionEnabledTest;
936
937 TEST_F(IsQueryExtractionEnabledTest, NotSet) {
938 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
939 "EmbeddedSearch", "Group1 espv:2"));
940 EXPECT_TRUE(IsInstantExtendedAPIEnabled());
941 EXPECT_FALSE(IsQueryExtractionEnabled());
942 EXPECT_EQ(2ul, EmbeddedSearchPageVersion());
943 }
944
945 TEST_F(IsQueryExtractionEnabledTest, EnabledViaFinch) {
946 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
947 "EmbeddedSearch", "Group1 espv:2 query_extraction:1"));
948 EXPECT_TRUE(IsInstantExtendedAPIEnabled());
949 EXPECT_TRUE(IsQueryExtractionEnabled());
950 EXPECT_EQ(2ul, EmbeddedSearchPageVersion());
951 }
952
953 TEST_F(IsQueryExtractionEnabledTest, DisabledViaFinch) {
954 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
955 "EmbeddedSearch", "Group1 espv:2 query_extraction:0"));
956 EXPECT_TRUE(IsInstantExtendedAPIEnabled());
957 EXPECT_FALSE(IsQueryExtractionEnabled());
958 EXPECT_EQ(2ul, EmbeddedSearchPageVersion());
959 }
960
961 TEST_F(IsQueryExtractionEnabledTest, EnabledViaCommandLine) {
962 EnableQueryExtractionForTesting();
963 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
964 "EmbeddedSearch", "Group1 espv:2 query_extraction:0"));
965 EXPECT_TRUE(IsInstantExtendedAPIEnabled());
966 EXPECT_TRUE(IsQueryExtractionEnabled());
967 EXPECT_EQ(2ul, EmbeddedSearchPageVersion());
968 }
969
1001 } // namespace chrome 970 } // namespace chrome
OLDNEW
« no previous file with comments | « chrome/browser/search/search.cc ('k') | chrome/browser/search_engines/template_url.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698