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 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
53 const GURL& url, | 53 const GURL& url, |
54 const Referrer& referrer, | 54 const Referrer& referrer, |
55 Origin origin, | 55 Origin origin, |
56 bool call_did_finish_load, | 56 bool call_did_finish_load, |
57 const content::SessionStorageNamespaceMap& session_storage_namespace_map); | 57 const content::SessionStorageNamespaceMap& session_storage_namespace_map); |
58 | 58 |
59 virtual void StartPrerendering( | 59 virtual void StartPrerendering( |
60 int ALLOW_UNUSED creator_child_id, | 60 int ALLOW_UNUSED creator_child_id, |
61 const gfx::Size& ALLOW_UNUSED size, | 61 const gfx::Size& ALLOW_UNUSED size, |
62 content::SessionStorageNamespace* session_storage_namespace, | 62 content::SessionStorageNamespace* session_storage_namespace, |
63 net::URLRequestContextGetter* request_context) OVERRIDE; | 63 net::URLRequestContextGetter* request_context) override; |
64 virtual bool GetChildId(int* child_id) const OVERRIDE; | 64 virtual bool GetChildId(int* child_id) const override; |
65 virtual bool GetRouteId(int* route_id) const OVERRIDE; | 65 virtual bool GetRouteId(int* route_id) const override; |
66 | 66 |
67 private: | 67 private: |
68 Profile* profile_; | 68 Profile* profile_; |
69 const GURL url_; | 69 const GURL url_; |
70 bool call_did_finish_load_; | 70 bool call_did_finish_load_; |
71 content::SessionStorageNamespaceMap session_storage_namespace_map_; | 71 content::SessionStorageNamespaceMap session_storage_namespace_map_; |
72 | 72 |
73 DISALLOW_COPY_AND_ASSIGN(DummyPrerenderContents); | 73 DISALLOW_COPY_AND_ASSIGN(DummyPrerenderContents); |
74 }; | 74 }; |
75 | 75 |
76 class DummyPrerenderContentsFactory : public PrerenderContents::Factory { | 76 class DummyPrerenderContentsFactory : public PrerenderContents::Factory { |
77 public: | 77 public: |
78 DummyPrerenderContentsFactory( | 78 DummyPrerenderContentsFactory( |
79 bool call_did_finish_load, | 79 bool call_did_finish_load, |
80 const content::SessionStorageNamespaceMap& session_storage_namespace_map) | 80 const content::SessionStorageNamespaceMap& session_storage_namespace_map) |
81 : call_did_finish_load_(call_did_finish_load), | 81 : call_did_finish_load_(call_did_finish_load), |
82 session_storage_namespace_map_(session_storage_namespace_map) { | 82 session_storage_namespace_map_(session_storage_namespace_map) { |
83 } | 83 } |
84 | 84 |
85 virtual PrerenderContents* CreatePrerenderContents( | 85 virtual PrerenderContents* CreatePrerenderContents( |
86 PrerenderManager* prerender_manager, | 86 PrerenderManager* prerender_manager, |
87 Profile* profile, | 87 Profile* profile, |
88 const GURL& url, | 88 const GURL& url, |
89 const Referrer& referrer, | 89 const Referrer& referrer, |
90 Origin origin, | 90 Origin origin, |
91 uint8 experiment_id) OVERRIDE; | 91 uint8 experiment_id) override; |
92 | 92 |
93 private: | 93 private: |
94 bool call_did_finish_load_; | 94 bool call_did_finish_load_; |
95 content::SessionStorageNamespaceMap session_storage_namespace_map_; | 95 content::SessionStorageNamespaceMap session_storage_namespace_map_; |
96 | 96 |
97 DISALLOW_COPY_AND_ASSIGN(DummyPrerenderContentsFactory); | 97 DISALLOW_COPY_AND_ASSIGN(DummyPrerenderContentsFactory); |
98 }; | 98 }; |
99 | 99 |
100 DummyPrerenderContents::DummyPrerenderContents( | 100 DummyPrerenderContents::DummyPrerenderContents( |
101 PrerenderManager* prerender_manager, | 101 PrerenderManager* prerender_manager, |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 session_storage_namespace_map_); | 158 session_storage_namespace_map_); |
159 } | 159 } |
160 | 160 |
161 } // namespace | 161 } // namespace |
162 | 162 |
163 class InstantSearchPrerendererTest : public InstantUnitTestBase { | 163 class InstantSearchPrerendererTest : public InstantUnitTestBase { |
164 public: | 164 public: |
165 InstantSearchPrerendererTest() {} | 165 InstantSearchPrerendererTest() {} |
166 | 166 |
167 protected: | 167 protected: |
168 virtual void SetUp() OVERRIDE { | 168 virtual void SetUp() override { |
169 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch", | 169 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch", |
170 "Group1 strk:20")); | 170 "Group1 strk:20")); |
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(url::kAboutBlankURL)); | 176 AddTab(browser(), GURL(url::kAboutBlankURL)); |
177 | 177 |
178 content::SessionStorageNamespaceMap session_storage_namespace_map; | 178 content::SessionStorageNamespaceMap session_storage_namespace_map; |
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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: |
430 ReuseInstantSearchBasePageTest() {} | 430 ReuseInstantSearchBasePageTest() {} |
431 | 431 |
432 protected: | 432 protected: |
433 virtual void SetUp() OVERRIDE { | 433 virtual void SetUp() override { |
434 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch", | 434 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch", |
435 "Group1 strk:20")); | 435 "Group1 strk:20")); |
436 InstantUnitTestBase::SetUp(); | 436 InstantUnitTestBase::SetUp(); |
437 } | 437 } |
438 }; | 438 }; |
439 | 439 |
440 TEST_F(ReuseInstantSearchBasePageTest, CanCommitQuery) { | 440 TEST_F(ReuseInstantSearchBasePageTest, CanCommitQuery) { |
441 Init(true, true); | 441 Init(true, true); |
442 InstantSearchPrerenderer* prerenderer = GetInstantSearchPrerenderer(); | 442 InstantSearchPrerenderer* prerenderer = GetInstantSearchPrerenderer(); |
443 base::string16 query = ASCIIToUTF16("flowers"); | 443 base::string16 query = ASCIIToUTF16("flowers"); |
(...skipping 20 matching lines...) Expand all Loading... |
464 // When the Instant search base page hasn't finished loading, | 464 // When the Instant search base page hasn't finished loading, |
465 // InstantSearchPrerenderer cannot commit any search query to the base page. | 465 // InstantSearchPrerenderer cannot commit any search query to the base page. |
466 EXPECT_FALSE(prerenderer->CanCommitQuery(GetActiveWebContents(), query)); | 466 EXPECT_FALSE(prerenderer->CanCommitQuery(GetActiveWebContents(), query)); |
467 EXPECT_FALSE(prerenderer->CanCommitQuery(GetActiveWebContents(), | 467 EXPECT_FALSE(prerenderer->CanCommitQuery(GetActiveWebContents(), |
468 ASCIIToUTF16("joy"))); | 468 ASCIIToUTF16("joy"))); |
469 } | 469 } |
470 | 470 |
471 #if !defined(OS_IOS) && !defined(OS_ANDROID) | 471 #if !defined(OS_IOS) && !defined(OS_ANDROID) |
472 class TestUsePrerenderPage : public InstantSearchPrerendererTest { | 472 class TestUsePrerenderPage : public InstantSearchPrerendererTest { |
473 protected: | 473 protected: |
474 virtual void SetUp() OVERRIDE { | 474 virtual void SetUp() override { |
475 // Disable query extraction flag in field trials. | 475 // Disable query extraction flag in field trials. |
476 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( | 476 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( |
477 "EmbeddedSearch", "Group1 strk:20 query_extraction:0")); | 477 "EmbeddedSearch", "Group1 strk:20 query_extraction:0")); |
478 InstantUnitTestBase::SetUpWithoutQueryExtraction(); | 478 InstantUnitTestBase::SetUpWithoutQueryExtraction(); |
479 } | 479 } |
480 }; | 480 }; |
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 ui::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 |