Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1586)

Unified Diff: chrome/browser/prerender/prerender_unittest.cc

Issue 10802024: Make three simultanious prerenders the default maximum in Canary and Dev only. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix order of PrerenderManagerMode Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/prerender/prerender_unittest.cc
diff --git a/chrome/browser/prerender/prerender_unittest.cc b/chrome/browser/prerender/prerender_unittest.cc
index 07684df586572a5f9167273e235767bdc62d226b..d5639afdf18f252a2154fab040d7e326d15b7e1e 100644
--- a/chrome/browser/prerender/prerender_unittest.cc
+++ b/chrome/browser/prerender/prerender_unittest.cc
@@ -5,6 +5,7 @@
#include "base/command_line.h"
#include "base/memory/scoped_vector.h"
#include "base/message_loop.h"
+#include "base/stringprintf.h"
#include "base/time.h"
#include "chrome/browser/prerender/prerender_contents.h"
#include "chrome/browser/prerender/prerender_handle.h"
@@ -74,6 +75,7 @@ const gfx::Size kSize(640, 480);
class UnitTestPrerenderManager : public PrerenderManager {
public:
+ using PrerenderManager::kMinTimeBetweenPrerendersMs;
using PrerenderManager::kNavigationRecordWindowMs;
using PrerenderManager::GetMaxAge;
@@ -386,67 +388,50 @@ TEST_F(PrerenderTest, ExpireTest) {
ASSERT_EQ(null, prerender_manager()->FindEntry(url));
}
-// LRU Test. Make sure that if we prerender more than one request, that
+// LRU Test. Make sure that if we prerender more requests than we support, that
// the oldest one will be dropped.
TEST_F(PrerenderTest, DropOldestRequestTest) {
- GURL url("http://www.google.com/");
- DummyPrerenderContents* prerender_contents =
- prerender_manager()->CreateNextPrerenderContents(
- url,
- FINAL_STATUS_EVICTED);
- DummyPrerenderContents* null = NULL;
- EXPECT_TRUE(AddSimplePrerender(url));
- EXPECT_EQ(null, prerender_manager()->next_prerender_contents());
- EXPECT_TRUE(prerender_contents->prerendering_has_started());
-
- GURL url1("http://news.google.com/");
- DummyPrerenderContents* prerender_contents1 =
- prerender_manager()->CreateNextPrerenderContents(
- url1,
- FINAL_STATUS_USED);
- EXPECT_TRUE(AddSimplePrerender(url1));
- EXPECT_EQ(null, prerender_manager()->next_prerender_contents());
- EXPECT_TRUE(prerender_contents1->prerendering_has_started());
-
- ASSERT_EQ(null, prerender_manager()->FindEntry(url));
- ASSERT_EQ(prerender_contents1, prerender_manager()->FindAndUseEntry(url1));
-}
+ std::vector<int> concurrencies_to_test;
+ concurrencies_to_test.push_back(
+ prerender_manager()->config().max_concurrency);
+ concurrencies_to_test.push_back(1);
+ concurrencies_to_test.push_back(2);
-// Two element prerender test. Ensure that the LRU operates correctly if we
-// permit 2 elements to be kept prerendered.
-TEST_F(PrerenderTest, TwoElementPrerenderTest) {
- prerender_manager()->mutable_config().max_elements = 2;
- GURL url("http://www.google.com/");
- DummyPrerenderContents* prerender_contents =
- prerender_manager()->CreateNextPrerenderContents(
- url,
- FINAL_STATUS_EVICTED);
DummyPrerenderContents* null = NULL;
- EXPECT_TRUE(AddSimplePrerender(url));
- EXPECT_EQ(null, prerender_manager()->next_prerender_contents());
- EXPECT_TRUE(prerender_contents->prerendering_has_started());
-
- GURL url1("http://news.google.com/");
- DummyPrerenderContents* prerender_contents1 =
- prerender_manager()->CreateNextPrerenderContents(
- url1,
- FINAL_STATUS_USED);
- EXPECT_TRUE(AddSimplePrerender(url1));
- EXPECT_EQ(null, prerender_manager()->next_prerender_contents());
- EXPECT_TRUE(prerender_contents1->prerendering_has_started());
-
- GURL url2("http://images.google.com/");
- DummyPrerenderContents* prerender_contents2 =
- prerender_manager()->CreateNextPrerenderContents(
- url2,
- FINAL_STATUS_USED);
- EXPECT_TRUE(AddSimplePrerender(url2));
- EXPECT_EQ(null, prerender_manager()->next_prerender_contents());
- EXPECT_TRUE(prerender_contents2->prerendering_has_started());
+ GURL url_to_evict("http://www.google.com/evictme");
+
+ for (std::vector<int>::const_iterator i = concurrencies_to_test.begin();
+ i != concurrencies_to_test.end();
+ ++i) {
+ const int max_concurrency = *i;
+ prerender_manager()->mutable_config().max_concurrency = max_concurrency;
+
+ DummyPrerenderContents* prerender_contents_to_evict =
+ prerender_manager()->CreateNextPrerenderContents(
+ url_to_evict, FINAL_STATUS_EVICTED);
+ EXPECT_TRUE(AddSimplePrerender(url_to_evict));
+ EXPECT_EQ(null, prerender_manager()->next_prerender_contents());
+ EXPECT_TRUE(prerender_contents_to_evict->prerendering_has_started());
+
+ std::vector<GURL> urls;
+ std::vector<PrerenderContents*> prerender_contentses;
+
+ for (int j = 0; j < max_concurrency; ++j) {
+ urls.push_back(GURL(base::StringPrintf("http://google.com/use#%d", j)));
+ prerender_contentses.push_back(
+ prerender_manager()->CreateNextPrerenderContents(urls.back(),
+ FINAL_STATUS_USED));
+ EXPECT_TRUE(AddSimplePrerender(urls.back()));
+ EXPECT_EQ(null, prerender_manager()->next_prerender_contents());
+ EXPECT_TRUE(prerender_contentses.back()->prerendering_has_started());
+ }
- ASSERT_EQ(null, prerender_manager()->FindEntry(url));
- ASSERT_EQ(prerender_contents1, prerender_manager()->FindAndUseEntry(url1));
- ASSERT_EQ(prerender_contents2, prerender_manager()->FindAndUseEntry(url2));
+ ASSERT_EQ(null, prerender_manager()->FindEntry(url_to_evict));
+ for (int j = 0; j < max_concurrency; ++j) {
+ ASSERT_EQ(prerender_contentses[j],
+ prerender_manager()->FindAndUseEntry(urls[j]));
+ }
+ }
}
TEST_F(PrerenderTest, AliasURLTest) {
@@ -511,6 +496,10 @@ TEST_F(PrerenderTest, RateLimitInWindowTest) {
// Ensure that we don't ignore prerender requests outside the rate limit.
TEST_F(PrerenderTest, RateLimitOutsideWindowTest) {
+ // Setting concurrency to one lets us force eviction by adding only one more
+ // prerender.
+ prerender_manager()->mutable_config().max_concurrency = 1;
+
GURL url("http://www.google.com/");
DummyPrerenderContents* prerender_contents =
prerender_manager()->CreateNextPrerenderContents(
@@ -523,7 +512,8 @@ TEST_F(PrerenderTest, RateLimitOutsideWindowTest) {
prerender_manager()->set_rate_limit_enabled(true);
prerender_manager()->AdvanceTimeTicks(
- base::TimeDelta::FromMilliseconds(2000));
+ base::TimeDelta::FromMilliseconds(
+ UnitTestPrerenderManager::kMinTimeBetweenPrerendersMs + 500));
GURL url1("http://news.google.com/");
DummyPrerenderContents* rate_limit_prerender_contents =

Powered by Google App Engine
This is Rietveld 408576698