| 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());
|
| +}
|
|
|