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

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

Issue 141893009: Create a new helper function to extract search terms from the URL irrespective of the availablility (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 10 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"
11 #include "base/strings/string16.h" 11 #include "base/strings/string16.h"
12 #include "base/strings/utf_string_conversions.h" 12 #include "base/strings/utf_string_conversions.h"
13 #include "chrome/browser/autocomplete/autocomplete_match.h" 13 #include "chrome/browser/autocomplete/autocomplete_match.h"
14 #include "chrome/browser/prerender/prerender_contents.h" 14 #include "chrome/browser/prerender/prerender_contents.h"
15 #include "chrome/browser/prerender/prerender_handle.h" 15 #include "chrome/browser/prerender/prerender_handle.h"
16 #include "chrome/browser/prerender/prerender_manager.h" 16 #include "chrome/browser/prerender/prerender_manager.h"
17 #include "chrome/browser/prerender/prerender_manager_factory.h" 17 #include "chrome/browser/prerender/prerender_manager_factory.h"
18 #include "chrome/browser/prerender/prerender_origin.h" 18 #include "chrome/browser/prerender/prerender_origin.h"
19 #include "chrome/browser/prerender/prerender_tracker.h" 19 #include "chrome/browser/prerender/prerender_tracker.h"
20 #include "chrome/browser/profiles/profile.h" 20 #include "chrome/browser/profiles/profile.h"
21 #include "chrome/browser/search/instant_service.h" 21 #include "chrome/browser/search/instant_service.h"
22 #include "chrome/browser/search/instant_unittest_base.h" 22 #include "chrome/browser/search/instant_unittest_base.h"
23 #include "chrome/browser/search/search.h" 23 #include "chrome/browser/search/search.h"
24 #include "chrome/browser/ui/search/search_tab_helper.h" 24 #include "chrome/browser/ui/search/search_tab_helper.h"
25 #include "chrome/browser/ui/tabs/tab_strip_model.h" 25 #include "chrome/browser/ui/tabs/tab_strip_model.h"
26 #include "chrome/common/render_messages.h" 26 #include "chrome/common/render_messages.h"
27 #include "chrome/common/url_constants.h"
27 #include "content/public/browser/navigation_controller.h" 28 #include "content/public/browser/navigation_controller.h"
28 #include "content/public/browser/web_contents.h" 29 #include "content/public/browser/web_contents.h"
29 #include "content/public/common/url_constants.h" 30 #include "content/public/common/url_constants.h"
30 #include "content/public/test/mock_render_process_host.h" 31 #include "content/public/test/mock_render_process_host.h"
31 #include "ipc/ipc_message.h" 32 #include "ipc/ipc_message.h"
32 #include "ipc/ipc_test_sink.h" 33 #include "ipc/ipc_test_sink.h"
33 #include "ui/gfx/size.h" 34 #include "ui/gfx/size.h"
34 35
35 using base::ASCIIToUTF16; 36 using base::ASCIIToUTF16;
36 37
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after
331 // Search results page supports Instant search. InstantSearchPrerenderer is 332 // Search results page supports Instant search. InstantSearchPrerenderer is
332 // used only when the underlying page doesn't support Instant. 333 // used only when the underlying page doesn't support Instant.
333 NavigateAndCommitActiveTab(GURL("https://www.google.com/alt#quux=foo&strk")); 334 NavigateAndCommitActiveTab(GURL("https://www.google.com/alt#quux=foo&strk"));
334 active_tab = GetActiveWebContents(); 335 active_tab = GetActiveWebContents();
335 EXPECT_FALSE(chrome::GetSearchTermsFromURL(profile(), active_tab->GetURL()) 336 EXPECT_FALSE(chrome::GetSearchTermsFromURL(profile(), active_tab->GetURL())
336 .empty()); 337 .empty());
337 EXPECT_FALSE(chrome::ShouldPrefetchSearchResultsOnSRP()); 338 EXPECT_FALSE(chrome::ShouldPrefetchSearchResultsOnSRP());
338 EXPECT_FALSE(prerenderer->IsAllowed(search_type_match, active_tab)); 339 EXPECT_FALSE(prerenderer->IsAllowed(search_type_match, active_tab));
339 } 340 }
340 341
342 struct SearchURLTestCase {
343 const char* url;
344 const char* expected_result;
345 const char* comment;
346 };
347
348 TEST_F(InstantSearchPrerendererTest, GetSearchTermsFromURL) {
349 const SearchURLTestCase kTestCases[] = {
350 {chrome::kChromeSearchLocalNtpUrl, "", "NTP url"},
351 {"https://foo.com/instant?strk", "", "Invalid search url"},
352 {"https://foo.com/instant#strk", "", "Invalid search url"},
353 {"https://www.google.com/alt#quux=foo", "foo", "Valid search url"},
354 {"https://www.google.com/alt#quux=foo&strk", "foo", "Valid search url"}
355 };
356
357 Init(true, true);
358 InstantSearchPrerenderer* prerenderer = GetInstantSearchPrerenderer();
359 for (size_t i = 0; i < arraysize(kTestCases); ++i) {
360 const SearchURLTestCase& test = kTestCases[i];
361 EXPECT_EQ(
362 test.expected_result,
363 UTF16ToASCII(prerenderer->GetSearchTermsFromURL(GURL(test.url))))
364 << test.url << " " << test.comment;
365 }
366 }
367
341 TEST_F(InstantSearchPrerendererTest, UsePrerenderPage) { 368 TEST_F(InstantSearchPrerendererTest, UsePrerenderPage) {
342 PrerenderSearchQuery(ASCIIToUTF16("foo")); 369 PrerenderSearchQuery(ASCIIToUTF16("foo"));
343 370
344 // Open a search results page. A prerendered page exists for |url|. Make sure 371 // Open a search results page. A prerendered page exists for |url|. Make sure
345 // the browser swaps the current tab contents with the prerendered contents. 372 // the browser swaps the current tab contents with the prerendered contents.
346 GURL url("https://www.google.com/alt#quux=foo&strk"); 373 GURL url("https://www.google.com/alt#quux=foo&strk");
347 browser()->OpenURL(content::OpenURLParams(url, Referrer(), CURRENT_TAB, 374 browser()->OpenURL(content::OpenURLParams(url, Referrer(), CURRENT_TAB,
348 content::PAGE_TRANSITION_TYPED, 375 content::PAGE_TRANSITION_TYPED,
349 false)); 376 false));
350 EXPECT_EQ(GetPrerenderURL(), GetActiveWebContents()->GetURL()); 377 EXPECT_EQ(GetPrerenderURL(), GetActiveWebContents()->GetURL());
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
437 InstantSearchPrerenderer* prerenderer = GetInstantSearchPrerenderer(); 464 InstantSearchPrerenderer* prerenderer = GetInstantSearchPrerenderer();
438 base::string16 query = ASCIIToUTF16("flowers"); 465 base::string16 query = ASCIIToUTF16("flowers");
439 prerenderer->Prerender(InstantSuggestion(query, std::string())); 466 prerenderer->Prerender(InstantSuggestion(query, std::string()));
440 467
441 // When the Instant search base page hasn't finished loading, 468 // When the Instant search base page hasn't finished loading,
442 // InstantSearchPrerenderer cannot commit any search query to the base page. 469 // InstantSearchPrerenderer cannot commit any search query to the base page.
443 EXPECT_FALSE(prerenderer->CanCommitQuery(GetActiveWebContents(), query)); 470 EXPECT_FALSE(prerenderer->CanCommitQuery(GetActiveWebContents(), query));
444 EXPECT_FALSE(prerenderer->CanCommitQuery(GetActiveWebContents(), 471 EXPECT_FALSE(prerenderer->CanCommitQuery(GetActiveWebContents(),
445 ASCIIToUTF16("joy"))); 472 ASCIIToUTF16("joy")));
446 } 473 }
474
475 class TestUsePrerenderPage : public InstantSearchPrerendererTest {
476 protected:
477 virtual void SetUp() OVERRIDE {
478 // Disable query extraction flag in field trials.
479 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
480 "EmbeddedSearch",
481 "Group1 strk:20 query_extraction:0 prefetch_results:1"));
482 InstantUnitTestBase::SetUpWithoutQueryExtraction();
483 }
484 };
485
486 TEST_F(TestUsePrerenderPage, ExtractSearchTermsAndUsePrerenderPage) {
487 PrerenderSearchQuery(ASCIIToUTF16("foo"));
488
489 // Open a search results page. Query extraction flag is disabled in field
490 // trials. Search results page URL does not contain search terms replacement
491 // key. Make sure UsePrerenderedPage() extracts the search terms from the URL
492 // and uses the prerendered page contents.
493 GURL url("https://www.google.com/alt#quux=foo");
494 browser()->OpenURL(content::OpenURLParams(url, Referrer(), CURRENT_TAB,
495 content::PAGE_TRANSITION_TYPED,
496 false));
497 EXPECT_EQ(GetPrerenderURL(), GetActiveWebContents()->GetURL());
498 EXPECT_EQ(static_cast<PrerenderHandle*>(NULL), prerender_handle());
499 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698