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

Side by Side Diff: chrome/browser/ui/search/instant_search_prerenderer_unittest.cc

Issue 360373006: Enable prefetch-search-results on Desktop Chrome by default. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added DCHECK Created 6 years, 5 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 | Annotate | Revision Log
OLDNEW
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 "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/metrics/field_trial.h" 10 #include "base/metrics/field_trial.h"
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
159 } 159 }
160 160
161 } // namespace 161 } // namespace
162 162
163 class InstantSearchPrerendererTest : public InstantUnitTestBase { 163 class InstantSearchPrerendererTest : public InstantUnitTestBase {
164 public: 164 public:
165 InstantSearchPrerendererTest() {} 165 InstantSearchPrerendererTest() {}
166 166
167 protected: 167 protected:
168 virtual void SetUp() OVERRIDE { 168 virtual void SetUp() OVERRIDE {
169 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 169 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch",
170 "EmbeddedSearch", "Group1 strk:20 prefetch_results:1")); 170 "Group1 strk:20"));
171 InstantUnitTestBase::SetUp(); 171 InstantUnitTestBase::SetUp();
172 } 172 }
173 173
174 void Init(bool prerender_search_results_base_page, 174 void Init(bool prerender_search_results_base_page,
175 bool call_did_finish_load) { 175 bool call_did_finish_load) {
176 AddTab(browser(), GURL(url::kAboutBlankURL)); 176 AddTab(browser(), GURL(url::kAboutBlankURL));
177 177
178 content::SessionStorageNamespaceMap session_storage_namespace_map; 178 content::SessionStorageNamespaceMap session_storage_namespace_map;
179 session_storage_namespace_map[std::string()] = 179 session_storage_namespace_map[std::string()] =
180 GetActiveWebContents()->GetController(). 180 GetActiveWebContents()->GetController().
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
278 278
279 TEST_F(InstantSearchPrerendererTest, CanCommitQuery) { 279 TEST_F(InstantSearchPrerendererTest, CanCommitQuery) {
280 Init(true, true); 280 Init(true, true);
281 InstantSearchPrerenderer* prerenderer = GetInstantSearchPrerenderer(); 281 InstantSearchPrerenderer* prerenderer = GetInstantSearchPrerenderer();
282 base::string16 query = ASCIIToUTF16("flowers"); 282 base::string16 query = ASCIIToUTF16("flowers");
283 prerenderer->Prerender(InstantSuggestion(query, std::string())); 283 prerenderer->Prerender(InstantSuggestion(query, std::string()));
284 EXPECT_TRUE(prerenderer->CanCommitQuery(GetActiveWebContents(), query)); 284 EXPECT_TRUE(prerenderer->CanCommitQuery(GetActiveWebContents(), query));
285 285
286 // Make sure InstantSearchPrerenderer::CanCommitQuery() returns false for 286 // Make sure InstantSearchPrerenderer::CanCommitQuery() returns false for
287 // invalid search queries. 287 // invalid search queries.
288 EXPECT_FALSE(prerenderer->CanCommitQuery(GetActiveWebContents(), 288 EXPECT_TRUE(prerenderer->CanCommitQuery(GetActiveWebContents(),
289 ASCIIToUTF16("joy"))); 289 ASCIIToUTF16("joy")));
290 EXPECT_FALSE(prerenderer->CanCommitQuery(GetActiveWebContents(), 290 EXPECT_FALSE(prerenderer->CanCommitQuery(GetActiveWebContents(),
291 base::string16())); 291 base::string16()));
292 } 292 }
293 293
294 TEST_F(InstantSearchPrerendererTest, CommitQuery) { 294 TEST_F(InstantSearchPrerendererTest, CommitQuery) {
295 base::string16 query = ASCIIToUTF16("flowers"); 295 base::string16 query = ASCIIToUTF16("flowers");
296 PrerenderSearchQuery(query); 296 PrerenderSearchQuery(query);
297 InstantSearchPrerenderer* prerenderer = GetInstantSearchPrerenderer(); 297 InstantSearchPrerenderer* prerenderer = GetInstantSearchPrerenderer();
298 prerenderer->Commit(query); 298 prerenderer->Commit(query);
299 EXPECT_TRUE(MessageWasSent(ChromeViewMsg_SearchBoxSubmit::ID)); 299 EXPECT_TRUE(MessageWasSent(ChromeViewMsg_SearchBoxSubmit::ID));
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
372 // Make sure the browser navigates the current tab to this |url|. 372 // Make sure the browser navigates the current tab to this |url|.
373 GURL url("https://www.google.com/alt#quux=foo&strk"); 373 GURL url("https://www.google.com/alt#quux=foo&strk");
374 browser()->OpenURL(content::OpenURLParams(url, Referrer(), CURRENT_TAB, 374 browser()->OpenURL(content::OpenURLParams(url, Referrer(), CURRENT_TAB,
375 content::PAGE_TRANSITION_TYPED, 375 content::PAGE_TRANSITION_TYPED,
376 false)); 376 false));
377 EXPECT_NE(GetPrerenderURL(), GetActiveWebContents()->GetURL()); 377 EXPECT_NE(GetPrerenderURL(), GetActiveWebContents()->GetURL());
378 EXPECT_EQ(url, GetActiveWebContents()->GetURL()); 378 EXPECT_EQ(url, GetActiveWebContents()->GetURL());
379 } 379 }
380 380
381 TEST_F(InstantSearchPrerendererTest, 381 TEST_F(InstantSearchPrerendererTest,
382 CancelPrerenderRequest_SearchQueryMistmatch) { 382 UsePrerenderedPage_SearchQueryMistmatch) {
383 PrerenderSearchQuery(ASCIIToUTF16("foo")); 383 PrerenderSearchQuery(ASCIIToUTF16("foo"));
384 384
385 // Open a search results page. Committed query("pen") doesn't match with the 385 // Open a search results page. Committed query("pen") doesn't match with the
386 // prerendered search query("foo"). Make sure the InstantSearchPrerenderer 386 // prerendered search query("foo"). Make sure the browser swaps the current
387 // cancels the active prerender request and the browser navigates the active 387 // tab contents with the prerendered contents.
388 // tab to this |url|.
389 GURL url("https://www.google.com/alt#quux=pen&strk"); 388 GURL url("https://www.google.com/alt#quux=pen&strk");
390 browser()->OpenURL(content::OpenURLParams(url, Referrer(), CURRENT_TAB, 389 browser()->OpenURL(content::OpenURLParams(url, Referrer(), CURRENT_TAB,
391 content::PAGE_TRANSITION_TYPED, 390 content::PAGE_TRANSITION_TYPED,
392 false)); 391 false));
393 EXPECT_NE(GetPrerenderURL(), GetActiveWebContents()->GetURL()); 392 EXPECT_EQ(GetPrerenderURL(), GetActiveWebContents()->GetURL());
394 EXPECT_EQ(url, GetActiveWebContents()->GetURL());
395 EXPECT_EQ(static_cast<PrerenderHandle*>(NULL), prerender_handle()); 393 EXPECT_EQ(static_cast<PrerenderHandle*>(NULL), prerender_handle());
396 } 394 }
397 395
398 TEST_F(InstantSearchPrerendererTest, 396 TEST_F(InstantSearchPrerendererTest,
399 CancelPrerenderRequest_EmptySearchQueryCommitted) { 397 CancelPrerenderRequest_EmptySearchQueryCommitted) {
400 PrerenderSearchQuery(ASCIIToUTF16("foo")); 398 PrerenderSearchQuery(ASCIIToUTF16("foo"));
401 399
402 // Open a search results page. Make sure the InstantSearchPrerenderer cancels 400 // Open a search results page. Make sure the InstantSearchPrerenderer cancels
403 // the active prerender request upon the receipt of empty search query. 401 // the active prerender request upon the receipt of empty search query.
404 GURL url("https://www.google.com/alt#quux=&strk"); 402 GURL url("https://www.google.com/alt#quux=&strk");
(...skipping 21 matching lines...) Expand all
426 EXPECT_EQ(url, new_tab->GetURL()); 424 EXPECT_EQ(url, new_tab->GetURL());
427 EXPECT_EQ(static_cast<PrerenderHandle*>(NULL), prerender_handle()); 425 EXPECT_EQ(static_cast<PrerenderHandle*>(NULL), prerender_handle());
428 } 426 }
429 427
430 class ReuseInstantSearchBasePageTest : public InstantSearchPrerendererTest { 428 class ReuseInstantSearchBasePageTest : public InstantSearchPrerendererTest {
431 public: 429 public:
432 ReuseInstantSearchBasePageTest() {} 430 ReuseInstantSearchBasePageTest() {}
433 431
434 protected: 432 protected:
435 virtual void SetUp() OVERRIDE { 433 virtual void SetUp() OVERRIDE {
436 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 434 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch",
437 "EmbeddedSearch", 435 "Group1 strk:20"));
438 "Group1 strk:20 prefetch_results:1 reuse_instant_search_base_page:1"));
439 InstantUnitTestBase::SetUp(); 436 InstantUnitTestBase::SetUp();
440 } 437 }
441 }; 438 };
442 439
443 TEST_F(ReuseInstantSearchBasePageTest, CanCommitQuery) { 440 TEST_F(ReuseInstantSearchBasePageTest, CanCommitQuery) {
444 Init(true, true); 441 Init(true, true);
445 InstantSearchPrerenderer* prerenderer = GetInstantSearchPrerenderer(); 442 InstantSearchPrerenderer* prerenderer = GetInstantSearchPrerenderer();
446 base::string16 query = ASCIIToUTF16("flowers"); 443 base::string16 query = ASCIIToUTF16("flowers");
447 prerenderer->Prerender(InstantSuggestion(query, std::string())); 444 prerenderer->Prerender(InstantSuggestion(query, std::string()));
448 EXPECT_TRUE(prerenderer->CanCommitQuery(GetActiveWebContents(), query)); 445 EXPECT_TRUE(prerenderer->CanCommitQuery(GetActiveWebContents(), query));
(...skipping 21 matching lines...) Expand all
470 EXPECT_FALSE(prerenderer->CanCommitQuery(GetActiveWebContents(), 467 EXPECT_FALSE(prerenderer->CanCommitQuery(GetActiveWebContents(),
471 ASCIIToUTF16("joy"))); 468 ASCIIToUTF16("joy")));
472 } 469 }
473 470
474 #if !defined(OS_IOS) && !defined(OS_ANDROID) 471 #if !defined(OS_IOS) && !defined(OS_ANDROID)
475 class TestUsePrerenderPage : public InstantSearchPrerendererTest { 472 class TestUsePrerenderPage : public InstantSearchPrerendererTest {
476 protected: 473 protected:
477 virtual void SetUp() OVERRIDE { 474 virtual void SetUp() OVERRIDE {
478 // Disable query extraction flag in field trials. 475 // Disable query extraction flag in field trials.
479 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 476 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
480 "EmbeddedSearch", 477 "EmbeddedSearch", "Group1 strk:20 query_extraction:0"));
481 "Group1 strk:20 query_extraction:0 prefetch_results:1"));
482 InstantUnitTestBase::SetUpWithoutQueryExtraction(); 478 InstantUnitTestBase::SetUpWithoutQueryExtraction();
483 } 479 }
484 }; 480 };
485 481
486 TEST_F(TestUsePrerenderPage, ExtractSearchTermsAndUsePrerenderPage) { 482 TEST_F(TestUsePrerenderPage, ExtractSearchTermsAndUsePrerenderPage) {
487 PrerenderSearchQuery(ASCIIToUTF16("foo")); 483 PrerenderSearchQuery(ASCIIToUTF16("foo"));
488 484
489 // Open a search results page. Query extraction flag is disabled in field 485 // Open a search results page. Query extraction flag is disabled in field
490 // trials. Search results page URL does not contain search terms replacement 486 // trials. Search results page URL does not contain search terms replacement
491 // key. Make sure UsePrerenderedPage() extracts the search terms from the URL 487 // key. Make sure UsePrerenderedPage() extracts the search terms from the URL
492 // and uses the prerendered page contents. 488 // and uses the prerendered page contents.
493 GURL url("https://www.google.com/alt#quux=foo"); 489 GURL url("https://www.google.com/alt#quux=foo");
494 browser()->OpenURL(content::OpenURLParams(url, Referrer(), CURRENT_TAB, 490 browser()->OpenURL(content::OpenURLParams(url, Referrer(), CURRENT_TAB,
495 content::PAGE_TRANSITION_TYPED, 491 content::PAGE_TRANSITION_TYPED,
496 false)); 492 false));
497 EXPECT_EQ(GetPrerenderURL(), GetActiveWebContents()->GetURL()); 493 EXPECT_EQ(GetPrerenderURL(), GetActiveWebContents()->GetURL());
498 EXPECT_EQ(static_cast<PrerenderHandle*>(NULL), prerender_handle()); 494 EXPECT_EQ(static_cast<PrerenderHandle*>(NULL), prerender_handle());
499 } 495 }
500 #endif 496 #endif
OLDNEW
« no previous file with comments | « chrome/browser/ui/omnibox/omnibox_current_page_delegate_impl.cc ('k') | chrome/browser/ui/search/search_ipc_router.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698