Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "base/time.h" | 5 #include "base/time.h" |
| 6 #include "chrome/browser/prerender/prerender_contents.h" | 6 #include "chrome/browser/prerender/prerender_contents.h" |
| 7 #include "chrome/browser/prerender/prerender_manager.h" | 7 #include "chrome/browser/prerender/prerender_manager.h" |
| 8 #include "content/browser/browser_thread.h" | 8 #include "content/browser/browser_thread.h" |
| 9 #include "content/browser/renderer_host/render_view_host.h" | 9 #include "content/browser/renderer_host/render_view_host.h" |
| 10 #include "content/browser/renderer_host/render_process_host.h" | 10 #include "content/browser/renderer_host/render_process_host.h" |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 32 FinalStatus expected_final_status) | 32 FinalStatus expected_final_status) |
| 33 : PrerenderContents(prerender_manager, NULL, url, alias_urls, GURL()), | 33 : PrerenderContents(prerender_manager, NULL, url, alias_urls, GURL()), |
| 34 has_started_(false), | 34 has_started_(false), |
| 35 expected_final_status_(expected_final_status) { | 35 expected_final_status_(expected_final_status) { |
| 36 } | 36 } |
| 37 | 37 |
| 38 virtual ~DummyPrerenderContents() { | 38 virtual ~DummyPrerenderContents() { |
| 39 EXPECT_EQ(expected_final_status_, final_status()); | 39 EXPECT_EQ(expected_final_status_, final_status()); |
| 40 } | 40 } |
| 41 | 41 |
| 42 virtual void StartPrerendering() OVERRIDE { | 42 virtual void StartPrerendering( |
| 43 const RenderViewHost* source_render_view_host) OVERRIDE { | |
| 43 has_started_ = true; | 44 has_started_ = true; |
| 44 } | 45 } |
| 45 | 46 |
| 46 virtual bool GetChildId(int* child_id) const OVERRIDE { | 47 virtual bool GetChildId(int* child_id) const OVERRIDE { |
| 47 *child_id = 0; | 48 *child_id = 0; |
| 48 return true; | 49 return true; |
| 49 } | 50 } |
| 50 | 51 |
| 51 virtual bool GetRouteId(int* route_id) const OVERRIDE { | 52 virtual bool GetRouteId(int* route_id) const OVERRIDE { |
| 52 *route_id = 0; | 53 *route_id = 0; |
| (...skipping 24 matching lines...) Expand all Loading... | |
| 77 void AdvanceTimeTicks(base::TimeDelta delta) { | 78 void AdvanceTimeTicks(base::TimeDelta delta) { |
| 78 time_ticks_ += delta; | 79 time_ticks_ += delta; |
| 79 } | 80 } |
| 80 | 81 |
| 81 void SetNextPrerenderContents(PrerenderContents* pc) { | 82 void SetNextPrerenderContents(PrerenderContents* pc) { |
| 82 next_pc_.reset(pc); | 83 next_pc_.reset(pc); |
| 83 } | 84 } |
| 84 | 85 |
| 85 // Shorthand to add a simple preload with no aliases. | 86 // Shorthand to add a simple preload with no aliases. |
| 86 bool AddSimplePreload(const GURL& url) { | 87 bool AddSimplePreload(const GURL& url) { |
| 87 return AddPreload(url, std::vector<GURL>(), GURL()); | 88 return AddPreload(std::pair<int, int>(-1, -1), url, std::vector<GURL>(), |
| 89 GURL()); | |
| 88 } | 90 } |
| 89 | 91 |
| 90 bool IsPendingEntry(const GURL& url) { | 92 bool IsPendingEntry(const GURL& url) { |
| 91 return (PrerenderManager::FindPendingEntry(url) != NULL); | 93 return (PrerenderManager::FindPendingEntry(url) != NULL); |
| 92 } | 94 } |
| 93 | 95 |
| 94 void set_rate_limit_enabled(bool enabled) { rate_limit_enabled_ = true; } | 96 void set_rate_limit_enabled(bool enabled) { rate_limit_enabled_ = true; } |
| 95 | 97 |
| 98 // Shorthand to add a simple preload with aliases. | |
| 99 bool AddSimplePreloadWithAliases(const GURL& url, | |
| 100 const std::vector<GURL>& alias_urls) { | |
| 101 return AddPreload(std::pair<int, int>(-1, -1), url, alias_urls, GURL()); | |
| 102 } | |
| 103 | |
| 96 PrerenderContents* next_pc() { return next_pc_.get(); } | 104 PrerenderContents* next_pc() { return next_pc_.get(); } |
| 97 | 105 |
| 98 protected: | 106 protected: |
| 99 virtual ~TestPrerenderManager() { | 107 virtual ~TestPrerenderManager() { |
| 100 if (next_pc()) { | 108 if (next_pc()) { |
| 101 next_pc()->set_final_status( | 109 next_pc()->set_final_status( |
| 102 FINAL_STATUS_MANAGER_SHUTDOWN); | 110 FINAL_STATUS_MANAGER_SHUTDOWN); |
| 103 } | 111 } |
| 104 } | 112 } |
| 105 | 113 |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 272 GURL alias_url2("http://google.com/"); | 280 GURL alias_url2("http://google.com/"); |
| 273 GURL not_an_alias_url("http://google.com/index.html"); | 281 GURL not_an_alias_url("http://google.com/index.html"); |
| 274 std::vector<GURL> alias_urls; | 282 std::vector<GURL> alias_urls; |
| 275 alias_urls.push_back(alias_url1); | 283 alias_urls.push_back(alias_url1); |
| 276 alias_urls.push_back(alias_url2); | 284 alias_urls.push_back(alias_url2); |
| 277 DummyPrerenderContents* pc = | 285 DummyPrerenderContents* pc = |
| 278 new DummyPrerenderContents(prerender_manager_.get(), url, alias_urls, | 286 new DummyPrerenderContents(prerender_manager_.get(), url, alias_urls, |
| 279 FINAL_STATUS_USED); | 287 FINAL_STATUS_USED); |
| 280 // Test that all of the aliases work, but nont_an_alias_url does not. | 288 // Test that all of the aliases work, but nont_an_alias_url does not. |
| 281 prerender_manager_->SetNextPrerenderContents(pc); | 289 prerender_manager_->SetNextPrerenderContents(pc); |
| 282 EXPECT_TRUE(prerender_manager_->AddPreload(url, alias_urls, GURL())); | 290 EXPECT_TRUE(prerender_manager_->AddSimplePreloadWithAliases(url, alias_urls)); |
| 283 ASSERT_EQ(NULL, prerender_manager_->GetEntry(not_an_alias_url)); | 291 ASSERT_EQ(NULL, prerender_manager_->GetEntry(not_an_alias_url)); |
| 284 ASSERT_EQ(pc, prerender_manager_->GetEntry(alias_url1)); | 292 ASSERT_EQ(pc, prerender_manager_->GetEntry(alias_url1)); |
| 285 prerender_manager_->SetNextPrerenderContents(pc); | 293 prerender_manager_->SetNextPrerenderContents(pc); |
| 286 EXPECT_TRUE(prerender_manager_->AddPreload(url, alias_urls, GURL())); | 294 EXPECT_TRUE(prerender_manager_->AddSimplePreloadWithAliases(url, alias_urls)); |
| 287 ASSERT_EQ(pc, prerender_manager_->GetEntry(alias_url2)); | 295 ASSERT_EQ(pc, prerender_manager_->GetEntry(alias_url2)); |
| 288 prerender_manager_->SetNextPrerenderContents(pc); | 296 prerender_manager_->SetNextPrerenderContents(pc); |
| 289 EXPECT_TRUE(prerender_manager_->AddPreload(url, alias_urls, GURL())); | 297 EXPECT_TRUE(prerender_manager_->AddSimplePreloadWithAliases(url, alias_urls)); |
| 290 ASSERT_EQ(pc, prerender_manager_->GetEntry(url)); | 298 ASSERT_EQ(pc, prerender_manager_->GetEntry(url)); |
| 291 | 299 |
| 292 // Test that alias URLs can not be added. | 300 // Test that alias URLs can not be added. |
| 293 prerender_manager_->SetNextPrerenderContents(pc); | 301 prerender_manager_->SetNextPrerenderContents(pc); |
| 294 EXPECT_TRUE(prerender_manager_->AddPreload(url, alias_urls, GURL())); | 302 EXPECT_TRUE(prerender_manager_->AddSimplePreloadWithAliases(url, alias_urls)); |
| 295 EXPECT_FALSE(prerender_manager_->AddSimplePreload(url)); | 303 EXPECT_FALSE(prerender_manager_->AddSimplePreload(url)); |
| 296 EXPECT_FALSE(prerender_manager_->AddSimplePreload(alias_url1)); | 304 EXPECT_FALSE(prerender_manager_->AddSimplePreload(alias_url1)); |
| 297 EXPECT_FALSE(prerender_manager_->AddSimplePreload(alias_url2)); | 305 EXPECT_FALSE(prerender_manager_->AddSimplePreload(alias_url2)); |
| 298 ASSERT_EQ(pc, prerender_manager_->GetEntry(url)); | 306 ASSERT_EQ(pc, prerender_manager_->GetEntry(url)); |
| 299 | 307 |
| 300 pc->set_final_status(FINAL_STATUS_USED); | 308 pc->set_final_status(FINAL_STATUS_USED); |
| 301 delete pc; | 309 delete pc; |
| 302 } | 310 } |
| 303 | 311 |
| 304 // Ensure that we ignore prerender requests within the rate limit. | 312 // Ensure that we ignore prerender requests within the rate limit. |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 417 &result)); | 425 &result)); |
| 418 ASSERT_EQ(GURL("http://www.abercrombie.com/webapp/wcs/stores/servlet/StoreLoca tor?catalogId=&storeId=10051&langId=-1").spec(), result.spec()); | 426 ASSERT_EQ(GURL("http://www.abercrombie.com/webapp/wcs/stores/servlet/StoreLoca tor?catalogId=&storeId=10051&langId=-1").spec(), result.spec()); |
| 419 EXPECT_FALSE(PrerenderManager::MaybeGetQueryStringBasedAliasURL( | 427 EXPECT_FALSE(PrerenderManager::MaybeGetQueryStringBasedAliasURL( |
| 420 GURL("http://www.google.com/url?sadf=test&blah=blahblahblah"), &result)); | 428 GURL("http://www.google.com/url?sadf=test&blah=blahblahblah"), &result)); |
| 421 EXPECT_FALSE(PrerenderManager::MaybeGetQueryStringBasedAliasURL( | 429 EXPECT_FALSE(PrerenderManager::MaybeGetQueryStringBasedAliasURL( |
| 422 GURL("http://www.google.com/?url=INVALIDurlsAREsoMUCHfun.com"), &result)); | 430 GURL("http://www.google.com/?url=INVALIDurlsAREsoMUCHfun.com"), &result)); |
| 423 EXPECT_TRUE(PrerenderManager::MaybeGetQueryStringBasedAliasURL( | 431 EXPECT_TRUE(PrerenderManager::MaybeGetQueryStringBasedAliasURL( |
| 424 GURL("http://www.google.com/?url=http://validURLSareGREAT.com"), | 432 GURL("http://www.google.com/?url=http://validURLSareGREAT.com"), |
| 425 &result)); | 433 &result)); |
| 426 ASSERT_EQ(GURL("http://validURLSareGREAT.com").spec(), result.spec()); | 434 ASSERT_EQ(GURL("http://validURLSareGREAT.com").spec(), result.spec()); |
| 427 } | 435 } |
|
cbentzel
2011/04/19 17:42:41
I'd really like to see a unit test for the Prerend
mmenke
2011/04/19 20:00:01
Added two tests for this.
| |
| 428 | 436 |
| 429 } // namespace prerender | 437 } // namespace prerender |
| OLD | NEW |