| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 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 "chrome/browser/ui/search/instant_search_prerenderer.h" | 5 #include "chrome/browser/ui/search/instant_search_prerenderer.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 #include <tuple> | 10 #include <tuple> |
| (...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 340 TemplateURL* template_url = | 340 TemplateURL* template_url = |
| 341 custom_search_type_match.GetTemplateURL(service, false); | 341 custom_search_type_match.GetTemplateURL(service, false); |
| 342 EXPECT_TRUE(template_url); | 342 EXPECT_TRUE(template_url); |
| 343 EXPECT_TRUE(AutocompleteMatch::IsSearchType(custom_search_type_match.type)); | 343 EXPECT_TRUE(AutocompleteMatch::IsSearchType(custom_search_type_match.type)); |
| 344 EXPECT_FALSE(prerenderer->IsAllowed(custom_search_type_match, active_tab)); | 344 EXPECT_FALSE(prerenderer->IsAllowed(custom_search_type_match, active_tab)); |
| 345 | 345 |
| 346 AutocompleteMatch url_type_match(NULL, 1100, true, | 346 AutocompleteMatch url_type_match(NULL, 1100, true, |
| 347 AutocompleteMatchType::URL_WHAT_YOU_TYPED); | 347 AutocompleteMatchType::URL_WHAT_YOU_TYPED); |
| 348 EXPECT_FALSE(AutocompleteMatch::IsSearchType(url_type_match.type)); | 348 EXPECT_FALSE(AutocompleteMatch::IsSearchType(url_type_match.type)); |
| 349 EXPECT_FALSE(prerenderer->IsAllowed(url_type_match, active_tab)); | 349 EXPECT_FALSE(prerenderer->IsAllowed(url_type_match, active_tab)); |
| 350 | |
| 351 // Search results page supports Instant search. InstantSearchPrerenderer is | |
| 352 // used only when the underlying page doesn't support Instant. | |
| 353 NavigateAndCommitActiveTab(GURL("https://www.google.com/alt#quux=foo&strk")); | |
| 354 active_tab = GetActiveWebContents(); | |
| 355 EXPECT_FALSE( | |
| 356 search::ExtractSearchTermsFromURL(profile(), active_tab->GetURL()) | |
| 357 .empty()); | |
| 358 EXPECT_FALSE(prerenderer->IsAllowed(search_type_match, active_tab)); | |
| 359 } | 350 } |
| 360 | 351 |
| 361 TEST_F(InstantSearchPrerendererTest, UsePrerenderPage) { | 352 TEST_F(InstantSearchPrerendererTest, UsePrerenderPage) { |
| 362 PrerenderSearchQuery(ASCIIToUTF16("foo")); | 353 PrerenderSearchQuery(ASCIIToUTF16("foo")); |
| 363 | 354 |
| 364 // Open a search results page. A prerendered page exists for |url|. Make sure | 355 // Open a search results page. A prerendered page exists for |url|. Make sure |
| 365 // the browser swaps the current tab contents with the prerendered contents. | 356 // the browser swaps the current tab contents with the prerendered contents. |
| 366 GURL url("https://www.google.com/alt#quux=foo&strk"); | 357 GURL url("https://www.google.com/alt#quux=foo&strk"); |
| 367 browser()->OpenURL(content::OpenURLParams(url, Referrer(), CURRENT_TAB, | 358 browser()->OpenURL(content::OpenURLParams(url, Referrer(), CURRENT_TAB, |
| 368 ui::PAGE_TRANSITION_TYPED, | 359 ui::PAGE_TRANSITION_TYPED, |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 474 | 465 |
| 475 // When the Instant search base page hasn't finished loading, | 466 // When the Instant search base page hasn't finished loading, |
| 476 // InstantSearchPrerenderer cannot commit any search query to the base page. | 467 // InstantSearchPrerenderer cannot commit any search query to the base page. |
| 477 EXPECT_FALSE(prerenderer->CanCommitQuery(GetActiveWebContents(), query)); | 468 EXPECT_FALSE(prerenderer->CanCommitQuery(GetActiveWebContents(), query)); |
| 478 EXPECT_FALSE(prerenderer->CanCommitQuery(GetActiveWebContents(), | 469 EXPECT_FALSE(prerenderer->CanCommitQuery(GetActiveWebContents(), |
| 479 ASCIIToUTF16("joy"))); | 470 ASCIIToUTF16("joy"))); |
| 480 } | 471 } |
| 481 | 472 |
| 482 #if !defined(OS_ANDROID) | 473 #if !defined(OS_ANDROID) |
| 483 class TestUsePrerenderPage : public InstantSearchPrerendererTest { | 474 class TestUsePrerenderPage : public InstantSearchPrerendererTest { |
| 484 protected: | |
| 485 void SetUp() override { | |
| 486 // Disable query extraction flag in field trials. | |
| 487 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( | |
| 488 "EmbeddedSearch", "Group1 strk:20 query_extraction:0")); | |
| 489 InstantUnitTestBase::SetUpWithoutQueryExtraction(); | |
| 490 } | |
| 491 }; | 475 }; |
| 492 | 476 |
| 493 TEST_F(TestUsePrerenderPage, ExtractSearchTermsAndUsePrerenderPage) { | 477 TEST_F(TestUsePrerenderPage, ExtractSearchTermsAndUsePrerenderPage) { |
| 494 PrerenderSearchQuery(ASCIIToUTF16("foo")); | 478 PrerenderSearchQuery(ASCIIToUTF16("foo")); |
| 495 | 479 |
| 496 // Open a search results page. Query extraction flag is disabled in field | 480 // Open a search results page. Query extraction flag is disabled in field |
| 497 // trials. Search results page URL does not contain search terms replacement | 481 // trials. Search results page URL does not contain search terms replacement |
| 498 // key. Make sure UsePrerenderedPage() extracts the search terms from the URL | 482 // key. Make sure UsePrerenderedPage() extracts the search terms from the URL |
| 499 // and uses the prerendered page contents. | 483 // and uses the prerendered page contents. |
| 500 GURL url("https://www.google.com/alt#quux=foo"); | 484 GURL url("https://www.google.com/alt#quux=foo"); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 537 std::tuple<base::string16, EmbeddedSearchRequestParams> params; | 521 std::tuple<base::string16, EmbeddedSearchRequestParams> params; |
| 538 ChromeViewMsg_SearchBoxSubmit::Read(message, ¶ms); | 522 ChromeViewMsg_SearchBoxSubmit::Read(message, ¶ms); |
| 539 EXPECT_EQ("foo", base::UTF16ToASCII(std::get<0>(params))); | 523 EXPECT_EQ("foo", base::UTF16ToASCII(std::get<0>(params))); |
| 540 EXPECT_EQ("f", base::UTF16ToASCII(std::get<1>(params).original_query)); | 524 EXPECT_EQ("f", base::UTF16ToASCII(std::get<1>(params).original_query)); |
| 541 EXPECT_EQ("utf-8", base::UTF16ToASCII(std::get<1>(params).input_encoding)); | 525 EXPECT_EQ("utf-8", base::UTF16ToASCII(std::get<1>(params).input_encoding)); |
| 542 EXPECT_EQ("", base::UTF16ToASCII(std::get<1>(params).rlz_parameter_value)); | 526 EXPECT_EQ("", base::UTF16ToASCII(std::get<1>(params).rlz_parameter_value)); |
| 543 EXPECT_EQ("chrome...0", | 527 EXPECT_EQ("chrome...0", |
| 544 base::UTF16ToASCII(std::get<1>(params).assisted_query_stats)); | 528 base::UTF16ToASCII(std::get<1>(params).assisted_query_stats)); |
| 545 } | 529 } |
| 546 #endif | 530 #endif |
| OLD | NEW |