Index: chrome/browser/ui/search/instant_search_prerenderer_unittest.cc |
diff --git a/chrome/browser/ui/search/instant_search_prerenderer_unittest.cc b/chrome/browser/ui/search/instant_search_prerenderer_unittest.cc |
index f5437f2952b6dfc8b58bce0f39cc99bc9b217a1c..668de459f3f02b4f4fa8bb82d87fc84310b2c9ff 100644 |
--- a/chrome/browser/ui/search/instant_search_prerenderer_unittest.cc |
+++ b/chrome/browser/ui/search/instant_search_prerenderer_unittest.cc |
@@ -24,6 +24,7 @@ |
#include "chrome/browser/ui/search/search_tab_helper.h" |
#include "chrome/browser/ui/tabs/tab_strip_model.h" |
#include "chrome/common/render_messages.h" |
+#include "chrome/common/url_constants.h" |
#include "content/public/browser/navigation_controller.h" |
#include "content/public/browser/web_contents.h" |
#include "content/public/common/url_constants.h" |
@@ -338,6 +339,32 @@ TEST_F(InstantSearchPrerendererTest, PrerenderingAllowed) { |
EXPECT_FALSE(prerenderer->IsAllowed(search_type_match, active_tab)); |
} |
+struct SearchURLTestCase { |
+ const char* url; |
+ const char* expected_result; |
+ const char* comment; |
+}; |
+ |
+TEST_F(InstantSearchPrerendererTest, GetSearchTermsFromURL) { |
+ const SearchURLTestCase kTestCases[] = { |
+ {chrome::kChromeSearchLocalNtpUrl, "", "NTP url"}, |
+ {"https://foo.com/instant?strk", "", "Invalid search url"}, |
+ {"https://foo.com/instant#strk", "", "Invalid search url"}, |
+ {"https://www.google.com/alt#quux=foo", "foo", "Valid search url"}, |
+ {"https://www.google.com/alt#quux=foo&strk", "foo", "Valid search url"} |
+ }; |
+ |
+ Init(true, true); |
+ InstantSearchPrerenderer* prerenderer = GetInstantSearchPrerenderer(); |
+ for (size_t i = 0; i < arraysize(kTestCases); ++i) { |
+ const SearchURLTestCase& test = kTestCases[i]; |
+ EXPECT_EQ( |
+ test.expected_result, |
+ UTF16ToASCII(prerenderer->GetSearchTermsFromURL(GURL(test.url)))) |
+ << test.url << " " << test.comment; |
+ } |
+} |
+ |
TEST_F(InstantSearchPrerendererTest, UsePrerenderPage) { |
PrerenderSearchQuery(ASCIIToUTF16("foo")); |
@@ -444,3 +471,29 @@ TEST_F(ReuseInstantSearchBasePageTest, |
EXPECT_FALSE(prerenderer->CanCommitQuery(GetActiveWebContents(), |
ASCIIToUTF16("joy"))); |
} |
+ |
+class TestUsePrerenderPage : public InstantSearchPrerendererTest { |
+ protected: |
+ virtual void SetUp() OVERRIDE { |
+ // Disable query extraction flag in field trials. |
+ ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( |
+ "EmbeddedSearch", |
+ "Group1 strk:20 query_extraction:0 prefetch_results:1")); |
+ InstantUnitTestBase::SetUpWithoutQueryExtraction(); |
+ } |
+}; |
+ |
+TEST_F(TestUsePrerenderPage, ExtractSearchTermsAndUsePrerenderPage) { |
+ PrerenderSearchQuery(ASCIIToUTF16("foo")); |
+ |
+ // Open a search results page. Query extraction flag is disabled in field |
+ // trials. Search results page URL does not contain search terms replacement |
+ // key. Make sure UsePrerenderedPage() extracts the search terms from the URL |
+ // and uses the prerendered page contents. |
+ GURL url("https://www.google.com/alt#quux=foo"); |
+ browser()->OpenURL(content::OpenURLParams(url, Referrer(), CURRENT_TAB, |
+ content::PAGE_TRANSITION_TYPED, |
+ false)); |
+ EXPECT_EQ(GetPrerenderURL(), GetActiveWebContents()->GetURL()); |
+ EXPECT_EQ(static_cast<PrerenderHandle*>(NULL), prerender_handle()); |
+} |