| 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 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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( |
| 170 "EmbeddedSearch", "Group1 strk:20 prefetch_results:1")); | 170 "EmbeddedSearch", "Group1 strk:20 prefetch_results:1")); |
| 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(content::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(). |
| 181 GetDefaultSessionStorageNamespace(); | 181 GetDefaultSessionStorageNamespace(); |
| 182 PrerenderManagerFactory::GetForProfile(browser()->profile())-> | 182 PrerenderManagerFactory::GetForProfile(browser()->profile())-> |
| 183 SetPrerenderContentsFactory( | 183 SetPrerenderContentsFactory( |
| 184 new DummyPrerenderContentsFactory(call_did_finish_load, | 184 new DummyPrerenderContentsFactory(call_did_finish_load, |
| 185 session_storage_namespace_map)); | 185 session_storage_namespace_map)); |
| 186 PrerenderManagerFactory::GetForProfile(browser()->profile())-> | 186 PrerenderManagerFactory::GetForProfile(browser()->profile())-> |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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)); |
| 300 } | 300 } |
| 301 | 301 |
| 302 TEST_F(InstantSearchPrerendererTest, CancelPrerenderRequestOnTabChangeEvent) { | 302 TEST_F(InstantSearchPrerendererTest, CancelPrerenderRequestOnTabChangeEvent) { |
| 303 Init(true, true); | 303 Init(true, true); |
| 304 EXPECT_NE(static_cast<PrerenderHandle*>(NULL), prerender_handle()); | 304 EXPECT_NE(static_cast<PrerenderHandle*>(NULL), prerender_handle()); |
| 305 | 305 |
| 306 // Add a new tab to deactivate the current tab. | 306 // Add a new tab to deactivate the current tab. |
| 307 AddTab(browser(), GURL(content::kAboutBlankURL)); | 307 AddTab(browser(), GURL(url::kAboutBlankURL)); |
| 308 EXPECT_EQ(2, browser()->tab_strip_model()->count()); | 308 EXPECT_EQ(2, browser()->tab_strip_model()->count()); |
| 309 | 309 |
| 310 // Make sure the pending prerender request is cancelled. | 310 // Make sure the pending prerender request is cancelled. |
| 311 EXPECT_EQ(static_cast<PrerenderHandle*>(NULL), prerender_handle()); | 311 EXPECT_EQ(static_cast<PrerenderHandle*>(NULL), prerender_handle()); |
| 312 } | 312 } |
| 313 | 313 |
| 314 TEST_F(InstantSearchPrerendererTest, CancelPendingPrerenderRequest) { | 314 TEST_F(InstantSearchPrerendererTest, CancelPendingPrerenderRequest) { |
| 315 Init(true, true); | 315 Init(true, true); |
| 316 EXPECT_NE(static_cast<PrerenderHandle*>(NULL), prerender_handle()); | 316 EXPECT_NE(static_cast<PrerenderHandle*>(NULL), prerender_handle()); |
| 317 | 317 |
| 318 InstantSearchPrerenderer* prerenderer = GetInstantSearchPrerenderer(); | 318 InstantSearchPrerenderer* prerenderer = GetInstantSearchPrerenderer(); |
| 319 prerenderer->Cancel(); | 319 prerenderer->Cancel(); |
| 320 EXPECT_EQ(static_cast<PrerenderHandle*>(NULL), prerender_handle()); | 320 EXPECT_EQ(static_cast<PrerenderHandle*>(NULL), prerender_handle()); |
| 321 } | 321 } |
| 322 | 322 |
| 323 TEST_F(InstantSearchPrerendererTest, PrerenderingAllowed) { | 323 TEST_F(InstantSearchPrerendererTest, PrerenderingAllowed) { |
| 324 Init(true, true); | 324 Init(true, true); |
| 325 InstantSearchPrerenderer* prerenderer = GetInstantSearchPrerenderer(); | 325 InstantSearchPrerenderer* prerenderer = GetInstantSearchPrerenderer(); |
| 326 content::WebContents* active_tab = GetActiveWebContents(); | 326 content::WebContents* active_tab = GetActiveWebContents(); |
| 327 EXPECT_EQ(GURL(content::kAboutBlankURL), active_tab->GetURL()); | 327 EXPECT_EQ(GURL(url::kAboutBlankURL), active_tab->GetURL()); |
| 328 | 328 |
| 329 // Allow prerendering only for search type AutocompleteMatch suggestions. | 329 // Allow prerendering only for search type AutocompleteMatch suggestions. |
| 330 AutocompleteMatch search_type_match(NULL, 1100, false, | 330 AutocompleteMatch search_type_match(NULL, 1100, false, |
| 331 AutocompleteMatchType::SEARCH_SUGGEST); | 331 AutocompleteMatchType::SEARCH_SUGGEST); |
| 332 EXPECT_TRUE(AutocompleteMatch::IsSearchType(search_type_match.type)); | 332 EXPECT_TRUE(AutocompleteMatch::IsSearchType(search_type_match.type)); |
| 333 EXPECT_TRUE(prerenderer->IsAllowed(search_type_match, active_tab)); | 333 EXPECT_TRUE(prerenderer->IsAllowed(search_type_match, active_tab)); |
| 334 | 334 |
| 335 AutocompleteMatch url_type_match(NULL, 1100, true, | 335 AutocompleteMatch url_type_match(NULL, 1100, true, |
| 336 AutocompleteMatchType::URL_WHAT_YOU_TYPED); | 336 AutocompleteMatchType::URL_WHAT_YOU_TYPED); |
| 337 EXPECT_FALSE(AutocompleteMatch::IsSearchType(url_type_match.type)); | 337 EXPECT_FALSE(AutocompleteMatch::IsSearchType(url_type_match.type)); |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 474 // key. Make sure UsePrerenderedPage() extracts the search terms from the URL | 474 // key. Make sure UsePrerenderedPage() extracts the search terms from the URL |
| 475 // and uses the prerendered page contents. | 475 // and uses the prerendered page contents. |
| 476 GURL url("https://www.google.com/alt#quux=foo"); | 476 GURL url("https://www.google.com/alt#quux=foo"); |
| 477 browser()->OpenURL(content::OpenURLParams(url, Referrer(), CURRENT_TAB, | 477 browser()->OpenURL(content::OpenURLParams(url, Referrer(), CURRENT_TAB, |
| 478 content::PAGE_TRANSITION_TYPED, | 478 content::PAGE_TRANSITION_TYPED, |
| 479 false)); | 479 false)); |
| 480 EXPECT_EQ(GetPrerenderURL(), GetActiveWebContents()->GetURL()); | 480 EXPECT_EQ(GetPrerenderURL(), GetActiveWebContents()->GetURL()); |
| 481 EXPECT_EQ(static_cast<PrerenderHandle*>(NULL), prerender_handle()); | 481 EXPECT_EQ(static_cast<PrerenderHandle*>(NULL), prerender_handle()); |
| 482 } | 482 } |
| 483 #endif | 483 #endif |
| OLD | NEW |