| 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 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 195 InstantSuggestion(query, std::string()); | 195 InstantSuggestion(query, std::string()); |
| 196 } | 196 } |
| 197 | 197 |
| 198 content::WebContents* prerender_contents() { | 198 content::WebContents* prerender_contents() { |
| 199 return GetInstantSearchPrerenderer()->prerender_contents(); | 199 return GetInstantSearchPrerenderer()->prerender_contents(); |
| 200 } | 200 } |
| 201 | 201 |
| 202 bool MessageWasSent(uint32_t id) { | 202 bool MessageWasSent(uint32_t id) { |
| 203 content::MockRenderProcessHost* process = | 203 content::MockRenderProcessHost* process = |
| 204 static_cast<content::MockRenderProcessHost*>( | 204 static_cast<content::MockRenderProcessHost*>( |
| 205 prerender_contents()->GetRenderViewHost()->GetProcess()); | 205 prerender_contents()->GetMainFrame()->GetProcess()); |
| 206 return process->sink().GetFirstMessageMatching(id) != NULL; | 206 return process->sink().GetFirstMessageMatching(id) != NULL; |
| 207 } | 207 } |
| 208 | 208 |
| 209 content::WebContents* GetActiveWebContents() const { | 209 content::WebContents* GetActiveWebContents() const { |
| 210 return browser()->tab_strip_model()->GetWebContentsAt(0); | 210 return browser()->tab_strip_model()->GetWebContentsAt(0); |
| 211 } | 211 } |
| 212 | 212 |
| 213 PrerenderHandle* prerender_handle() { | 213 PrerenderHandle* prerender_handle() { |
| 214 return GetInstantSearchPrerenderer()->prerender_handle_.get(); | 214 return GetInstantSearchPrerenderer()->prerender_handle_.get(); |
| 215 } | 215 } |
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 421 url, Referrer(), WindowOpenDisposition::NEW_FOREGROUND_TAB, | 421 url, Referrer(), WindowOpenDisposition::NEW_FOREGROUND_TAB, |
| 422 ui::PAGE_TRANSITION_TYPED, false)); | 422 ui::PAGE_TRANSITION_TYPED, false)); |
| 423 content::WebContents* new_tab = | 423 content::WebContents* new_tab = |
| 424 browser()->tab_strip_model()->GetWebContentsAt(1); | 424 browser()->tab_strip_model()->GetWebContentsAt(1); |
| 425 EXPECT_NE(GetPrerenderURL(), new_tab->GetURL()); | 425 EXPECT_NE(GetPrerenderURL(), new_tab->GetURL()); |
| 426 EXPECT_EQ(url, new_tab->GetURL()); | 426 EXPECT_EQ(url, new_tab->GetURL()); |
| 427 EXPECT_EQ(static_cast<PrerenderHandle*>(NULL), prerender_handle()); | 427 EXPECT_EQ(static_cast<PrerenderHandle*>(NULL), prerender_handle()); |
| 428 } | 428 } |
| 429 | 429 |
| 430 class ReuseInstantSearchBasePageTest : public InstantSearchPrerendererTest { | 430 class ReuseInstantSearchBasePageTest : public InstantSearchPrerendererTest { |
| 431 public: | 431 public: |
| 432 ReuseInstantSearchBasePageTest() {} | 432 ReuseInstantSearchBasePageTest() {} |
| 433 | 433 |
| 434 protected: | 434 protected: |
| 435 void SetUp() override { | 435 void SetUp() override { |
| 436 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch", | 436 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch", |
| 437 "Group1 strk:20")); | 437 "Group1 strk:20")); |
| 438 InstantUnitTestBase::SetUp(); | 438 InstantUnitTestBase::SetUp(); |
| 439 } | 439 } |
| 440 }; | 440 }; |
| 441 | 441 |
| 442 TEST_F(ReuseInstantSearchBasePageTest, CanCommitQuery) { | 442 TEST_F(ReuseInstantSearchBasePageTest, CanCommitQuery) { |
| 443 Init(true, true); | 443 Init(true, true); |
| 444 InstantSearchPrerenderer* prerenderer = GetInstantSearchPrerenderer(); | 444 InstantSearchPrerenderer* prerenderer = GetInstantSearchPrerenderer(); |
| 445 base::string16 query = ASCIIToUTF16("flowers"); | 445 base::string16 query = ASCIIToUTF16("flowers"); |
| 446 prerenderer->Prerender(InstantSuggestion(query, std::string())); | 446 prerenderer->Prerender(InstantSuggestion(query, std::string())); |
| 447 EXPECT_TRUE(prerenderer->CanCommitQuery(GetActiveWebContents(), query)); | 447 EXPECT_TRUE(prerenderer->CanCommitQuery(GetActiveWebContents(), query)); |
| 448 | 448 |
| 449 // When the Instant search base page has finished loading, | 449 // When the Instant search base page has finished loading, |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 506 EXPECT_TRUE(browser()->instant_controller()); | 506 EXPECT_TRUE(browser()->instant_controller()); |
| 507 | 507 |
| 508 // Open a search results page. Query extraction flag is disabled in field | 508 // Open a search results page. Query extraction flag is disabled in field |
| 509 // trials. Search results page URL does not contain search terms replacement | 509 // trials. Search results page URL does not contain search terms replacement |
| 510 // key. | 510 // key. |
| 511 GURL url("https://www.google.com/url?bar=foo&aqs=chrome...0&ie=utf-8&oq=f"); | 511 GURL url("https://www.google.com/url?bar=foo&aqs=chrome...0&ie=utf-8&oq=f"); |
| 512 browser()->instant_controller()->OpenInstant( | 512 browser()->instant_controller()->OpenInstant( |
| 513 WindowOpenDisposition::CURRENT_TAB, url); | 513 WindowOpenDisposition::CURRENT_TAB, url); |
| 514 content::MockRenderProcessHost* process = | 514 content::MockRenderProcessHost* process = |
| 515 static_cast<content::MockRenderProcessHost*>( | 515 static_cast<content::MockRenderProcessHost*>( |
| 516 prerender_contents()->GetRenderViewHost()->GetProcess()); | 516 prerender_contents()->GetMainFrame()->GetProcess()); |
| 517 const IPC::Message* message = process->sink().GetFirstMessageMatching( | 517 const IPC::Message* message = process->sink().GetFirstMessageMatching( |
| 518 ChromeViewMsg_SearchBoxSubmit::ID); | 518 ChromeViewMsg_SearchBoxSubmit::ID); |
| 519 ASSERT_TRUE(message); | 519 ASSERT_TRUE(message); |
| 520 | 520 |
| 521 // Verify the IPC message params. | 521 // Verify the IPC message params. |
| 522 std::tuple<base::string16, EmbeddedSearchRequestParams> params; | 522 std::tuple<base::string16, EmbeddedSearchRequestParams> params; |
| 523 ChromeViewMsg_SearchBoxSubmit::Read(message, ¶ms); | 523 ChromeViewMsg_SearchBoxSubmit::Read(message, ¶ms); |
| 524 EXPECT_EQ("foo", base::UTF16ToASCII(std::get<0>(params))); | 524 EXPECT_EQ("foo", base::UTF16ToASCII(std::get<0>(params))); |
| 525 EXPECT_EQ("f", base::UTF16ToASCII(std::get<1>(params).original_query)); | 525 EXPECT_EQ("f", base::UTF16ToASCII(std::get<1>(params).original_query)); |
| 526 EXPECT_EQ("utf-8", base::UTF16ToASCII(std::get<1>(params).input_encoding)); | 526 EXPECT_EQ("utf-8", base::UTF16ToASCII(std::get<1>(params).input_encoding)); |
| 527 EXPECT_EQ("", base::UTF16ToASCII(std::get<1>(params).rlz_parameter_value)); | 527 EXPECT_EQ("", base::UTF16ToASCII(std::get<1>(params).rlz_parameter_value)); |
| 528 EXPECT_EQ("chrome...0", | 528 EXPECT_EQ("chrome...0", |
| 529 base::UTF16ToASCII(std::get<1>(params).assisted_query_stats)); | 529 base::UTF16ToASCII(std::get<1>(params).assisted_query_stats)); |
| 530 } | 530 } |
| 531 #endif | 531 #endif |
| OLD | NEW |