| 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 "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 336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 347 EXPECT_FALSE(prerenderer->IsAllowed(search_type_match, active_tab)); | 347 EXPECT_FALSE(prerenderer->IsAllowed(search_type_match, active_tab)); |
| 348 } | 348 } |
| 349 | 349 |
| 350 TEST_F(InstantSearchPrerendererTest, UsePrerenderPage) { | 350 TEST_F(InstantSearchPrerendererTest, UsePrerenderPage) { |
| 351 PrerenderSearchQuery(ASCIIToUTF16("foo")); | 351 PrerenderSearchQuery(ASCIIToUTF16("foo")); |
| 352 | 352 |
| 353 // Open a search results page. A prerendered page exists for |url|. Make sure | 353 // Open a search results page. A prerendered page exists for |url|. Make sure |
| 354 // the browser swaps the current tab contents with the prerendered contents. | 354 // the browser swaps the current tab contents with the prerendered contents. |
| 355 GURL url("https://www.google.com/alt#quux=foo&strk"); | 355 GURL url("https://www.google.com/alt#quux=foo&strk"); |
| 356 browser()->OpenURL(content::OpenURLParams(url, Referrer(), CURRENT_TAB, | 356 browser()->OpenURL(content::OpenURLParams(url, Referrer(), CURRENT_TAB, |
| 357 content::PAGE_TRANSITION_TYPED, | 357 ui::PAGE_TRANSITION_TYPED, |
| 358 false)); | 358 false)); |
| 359 EXPECT_EQ(GetPrerenderURL(), GetActiveWebContents()->GetURL()); | 359 EXPECT_EQ(GetPrerenderURL(), GetActiveWebContents()->GetURL()); |
| 360 EXPECT_EQ(static_cast<PrerenderHandle*>(NULL), prerender_handle()); | 360 EXPECT_EQ(static_cast<PrerenderHandle*>(NULL), prerender_handle()); |
| 361 } | 361 } |
| 362 | 362 |
| 363 TEST_F(InstantSearchPrerendererTest, PrerenderRequestCancelled) { | 363 TEST_F(InstantSearchPrerendererTest, PrerenderRequestCancelled) { |
| 364 PrerenderSearchQuery(ASCIIToUTF16("foo")); | 364 PrerenderSearchQuery(ASCIIToUTF16("foo")); |
| 365 | 365 |
| 366 // Cancel the prerender request. | 366 // Cancel the prerender request. |
| 367 InstantSearchPrerenderer* prerenderer = GetInstantSearchPrerenderer(); | 367 InstantSearchPrerenderer* prerenderer = GetInstantSearchPrerenderer(); |
| 368 prerenderer->Cancel(); | 368 prerenderer->Cancel(); |
| 369 EXPECT_EQ(static_cast<PrerenderHandle*>(NULL), prerender_handle()); | 369 EXPECT_EQ(static_cast<PrerenderHandle*>(NULL), prerender_handle()); |
| 370 | 370 |
| 371 // Open a search results page. Prerendered page does not exists for |url|. | 371 // Open a search results page. Prerendered page does not exists for |url|. |
| 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 ui::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 UsePrerenderedPage_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 browser swaps the current | 386 // prerendered search query("foo"). Make sure the browser swaps the current |
| 387 // tab contents with the prerendered contents. | 387 // tab contents with the prerendered contents. |
| 388 GURL url("https://www.google.com/alt#quux=pen&strk"); | 388 GURL url("https://www.google.com/alt#quux=pen&strk"); |
| 389 browser()->OpenURL(content::OpenURLParams(url, Referrer(), CURRENT_TAB, | 389 browser()->OpenURL(content::OpenURLParams(url, Referrer(), CURRENT_TAB, |
| 390 content::PAGE_TRANSITION_TYPED, | 390 ui::PAGE_TRANSITION_TYPED, |
| 391 false)); | 391 false)); |
| 392 EXPECT_EQ(GetPrerenderURL(), GetActiveWebContents()->GetURL()); | 392 EXPECT_EQ(GetPrerenderURL(), GetActiveWebContents()->GetURL()); |
| 393 EXPECT_EQ(static_cast<PrerenderHandle*>(NULL), prerender_handle()); | 393 EXPECT_EQ(static_cast<PrerenderHandle*>(NULL), prerender_handle()); |
| 394 } | 394 } |
| 395 | 395 |
| 396 TEST_F(InstantSearchPrerendererTest, | 396 TEST_F(InstantSearchPrerendererTest, |
| 397 CancelPrerenderRequest_EmptySearchQueryCommitted) { | 397 CancelPrerenderRequest_EmptySearchQueryCommitted) { |
| 398 PrerenderSearchQuery(ASCIIToUTF16("foo")); | 398 PrerenderSearchQuery(ASCIIToUTF16("foo")); |
| 399 | 399 |
| 400 // Open a search results page. Make sure the InstantSearchPrerenderer cancels | 400 // Open a search results page. Make sure the InstantSearchPrerenderer cancels |
| 401 // the active prerender request upon the receipt of empty search query. | 401 // the active prerender request upon the receipt of empty search query. |
| 402 GURL url("https://www.google.com/alt#quux=&strk"); | 402 GURL url("https://www.google.com/alt#quux=&strk"); |
| 403 browser()->OpenURL(content::OpenURLParams(url, Referrer(), CURRENT_TAB, | 403 browser()->OpenURL(content::OpenURLParams(url, Referrer(), CURRENT_TAB, |
| 404 content::PAGE_TRANSITION_TYPED, | 404 ui::PAGE_TRANSITION_TYPED, |
| 405 false)); | 405 false)); |
| 406 EXPECT_NE(GetPrerenderURL(), GetActiveWebContents()->GetURL()); | 406 EXPECT_NE(GetPrerenderURL(), GetActiveWebContents()->GetURL()); |
| 407 EXPECT_EQ(url, GetActiveWebContents()->GetURL()); | 407 EXPECT_EQ(url, GetActiveWebContents()->GetURL()); |
| 408 EXPECT_EQ(static_cast<PrerenderHandle*>(NULL), prerender_handle()); | 408 EXPECT_EQ(static_cast<PrerenderHandle*>(NULL), prerender_handle()); |
| 409 } | 409 } |
| 410 | 410 |
| 411 TEST_F(InstantSearchPrerendererTest, | 411 TEST_F(InstantSearchPrerendererTest, |
| 412 CancelPrerenderRequest_UnsupportedDispositions) { | 412 CancelPrerenderRequest_UnsupportedDispositions) { |
| 413 PrerenderSearchQuery(ASCIIToUTF16("pen")); | 413 PrerenderSearchQuery(ASCIIToUTF16("pen")); |
| 414 | 414 |
| 415 // Open a search results page. Make sure the InstantSearchPrerenderer cancels | 415 // Open a search results page. Make sure the InstantSearchPrerenderer cancels |
| 416 // the active prerender request for unsupported window dispositions. | 416 // the active prerender request for unsupported window dispositions. |
| 417 GURL url("https://www.google.com/alt#quux=pen&strk"); | 417 GURL url("https://www.google.com/alt#quux=pen&strk"); |
| 418 browser()->OpenURL(content::OpenURLParams(url, Referrer(), NEW_FOREGROUND_TAB, | 418 browser()->OpenURL(content::OpenURLParams(url, Referrer(), NEW_FOREGROUND_TAB, |
| 419 content::PAGE_TRANSITION_TYPED, | 419 ui::PAGE_TRANSITION_TYPED, |
| 420 false)); | 420 false)); |
| 421 content::WebContents* new_tab = | 421 content::WebContents* new_tab = |
| 422 browser()->tab_strip_model()->GetWebContentsAt(1); | 422 browser()->tab_strip_model()->GetWebContentsAt(1); |
| 423 EXPECT_NE(GetPrerenderURL(), new_tab->GetURL()); | 423 EXPECT_NE(GetPrerenderURL(), new_tab->GetURL()); |
| 424 EXPECT_EQ(url, new_tab->GetURL()); | 424 EXPECT_EQ(url, new_tab->GetURL()); |
| 425 EXPECT_EQ(static_cast<PrerenderHandle*>(NULL), prerender_handle()); | 425 EXPECT_EQ(static_cast<PrerenderHandle*>(NULL), prerender_handle()); |
| 426 } | 426 } |
| 427 | 427 |
| 428 class ReuseInstantSearchBasePageTest : public InstantSearchPrerendererTest { | 428 class ReuseInstantSearchBasePageTest : public InstantSearchPrerendererTest { |
| 429 public: | 429 public: |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 481 | 481 |
| 482 TEST_F(TestUsePrerenderPage, ExtractSearchTermsAndUsePrerenderPage) { | 482 TEST_F(TestUsePrerenderPage, ExtractSearchTermsAndUsePrerenderPage) { |
| 483 PrerenderSearchQuery(ASCIIToUTF16("foo")); | 483 PrerenderSearchQuery(ASCIIToUTF16("foo")); |
| 484 | 484 |
| 485 // 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 |
| 486 // trials. Search results page URL does not contain search terms replacement | 486 // trials. Search results page URL does not contain search terms replacement |
| 487 // key. Make sure UsePrerenderedPage() extracts the search terms from the URL | 487 // key. Make sure UsePrerenderedPage() extracts the search terms from the URL |
| 488 // and uses the prerendered page contents. | 488 // and uses the prerendered page contents. |
| 489 GURL url("https://www.google.com/alt#quux=foo"); | 489 GURL url("https://www.google.com/alt#quux=foo"); |
| 490 browser()->OpenURL(content::OpenURLParams(url, Referrer(), CURRENT_TAB, | 490 browser()->OpenURL(content::OpenURLParams(url, Referrer(), CURRENT_TAB, |
| 491 content::PAGE_TRANSITION_TYPED, | 491 ui::PAGE_TRANSITION_TYPED, |
| 492 false)); | 492 false)); |
| 493 EXPECT_EQ(GetPrerenderURL(), GetActiveWebContents()->GetURL()); | 493 EXPECT_EQ(GetPrerenderURL(), GetActiveWebContents()->GetURL()); |
| 494 EXPECT_EQ(static_cast<PrerenderHandle*>(NULL), prerender_handle()); | 494 EXPECT_EQ(static_cast<PrerenderHandle*>(NULL), prerender_handle()); |
| 495 } | 495 } |
| 496 #endif | 496 #endif |
| OLD | NEW |