Chromium Code Reviews| Index: chrome/browser/prerender/prerender_unittest.cc |
| diff --git a/chrome/browser/prerender/prerender_unittest.cc b/chrome/browser/prerender/prerender_unittest.cc |
| index c30343e836f38b41161b386ca55538d2f0b02814..54feea511acf37cb55d90c5bdc350efc12dd6f32 100644 |
| --- a/chrome/browser/prerender/prerender_unittest.cc |
| +++ b/chrome/browser/prerender/prerender_unittest.cc |
| @@ -148,6 +148,10 @@ class UnitTestPrerenderManager : public PrerenderManager { |
| return prerender_contents; |
| } |
| + bool SetTime(const std::string& time_string) { |
| + return base::Time::FromString(time_string.c_str(), &time_); |
| + } |
| + |
| void AdvanceTime(TimeDelta delta) { |
| time_ += delta; |
| } |
| @@ -1104,6 +1108,63 @@ TEST_F(PrerenderTest, PrerenderNotAllowedOnCellularWithExternalOrigin) { |
| EXPECT_FALSE(prerender_contents->prerendering_has_started()); |
| } |
| +TEST_F(PrerenderTest, PrerenderSilenceAllowsOffline) { |
|
droger
2016/08/25 13:17:29
Can you add a comment like:
// Checks that the pre
pasko
2016/08/25 13:32:01
Done this and other comments with slight modificat
|
| + // Set the time to 30 seconds before the experiment expires. |
| + ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( |
| + "PrerenderSilence", "ExperimentYes_expires_2016-12-20T00:01:00Z")); |
| + ASSERT_TRUE(prerender_manager()->SetTime("2016-12-20T00:00:30Z")); |
| + GURL url("http://www.google.com/"); |
| + DummyPrerenderContents* prerender_contents = |
| + prerender_manager()->CreateNextPrerenderContents( |
| + url, ORIGIN_OFFLINE, FINAL_STATUS_MANAGER_SHUTDOWN); |
| + std::unique_ptr<PrerenderHandle> prerender_handle = |
| + prerender_manager()->AddPrerenderForOffline(url, nullptr, kSize); |
| + EXPECT_TRUE(prerender_handle); |
| + EXPECT_TRUE(prerender_handle->IsPrerendering()); |
| + EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| + EXPECT_EQ(prerender_contents, prerender_handle->contents()); |
| + EXPECT_EQ(ORIGIN_OFFLINE, prerender_handle->contents()->origin()); |
| +} |
| + |
| +TEST_F(PrerenderTest, PrerenderSilenceDisallowsNonOffline) { |
|
droger
2016/08/25 13:17:29
// Checks that the prerender silence experiment di
pasko
2016/08/25 13:32:01
Done.
|
| + ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( |
| + "PrerenderSilence", "ExperimentYes_expires_2016-12-20T00:02:00Z")); |
| + GURL url("http://www.google.com/"); |
| + const Origin origins[] = { |
| + ORIGIN_GWS_PRERENDER, |
| + ORIGIN_OMNIBOX, |
| + ORIGIN_NONE, |
| + ORIGIN_LINK_REL_PRERENDER_SAMEDOMAIN, |
| + ORIGIN_LINK_REL_PRERENDER_CROSSDOMAIN, |
| + ORIGIN_EXTERNAL_REQUEST, |
| + ORIGIN_INSTANT, |
| + ORIGIN_LINK_REL_NEXT, |
| + ORIGIN_EXTERNAL_REQUEST_FORCED_CELLULAR, |
| + }; |
| + ASSERT_TRUE(prerender_manager()->SetTime("2016-12-20T00:01:00Z")); |
| + for (const Origin& origin : origins) { |
| + std::unique_ptr<PrerenderHandle> prerender_handle( |
| + prerender_manager()->AddPrerender(origin, url, content::Referrer(), |
| + gfx::Rect(kSize), nullptr)); |
| + EXPECT_FALSE(prerender_handle); |
| + } |
| +} |
| + |
| +TEST_F(PrerenderTest, PrerenderSilenceAllowsAfterExpiration) { |
|
droger
2016/08/25 13:17:28
// Checks that prerendering is enabled after expir
pasko
2016/08/25 13:32:01
Done.
|
| + ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( |
| + "PrerenderSilence", "ExperimentYes_expires_2016-12-20T00:02:00Z")); |
| + GURL url("http://www.google.com/"); |
| + ASSERT_TRUE(prerender_manager()->SetTime("2016-12-20T00:01:00Z")); |
| + prerender_manager()->AdvanceTime(TimeDelta::FromSeconds(60)); |
|
droger
2016/08/25 13:17:29
Should we call AdvanceTimeticks too, so that times
pasko
2016/08/25 13:32:01
TimeTicks should only be inspected after a prerend
|
| + DummyPrerenderContents* prerender_contents = |
| + prerender_manager()->CreateNextPrerenderContents(url, FINAL_STATUS_USED); |
| + EXPECT_TRUE(AddSimplePrerender(url)); |
| + EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
| + std::unique_ptr<PrerenderContents> entry = |
| + prerender_manager()->FindAndUseEntry(url); |
| + ASSERT_EQ(prerender_contents, entry.get()); |
| +} |
| + |
| TEST_F(PrerenderTest, PrerenderAllowedForOfflineAndForcedCellular) { |
| const Origin origins[] = { |
| ORIGIN_EXTERNAL_REQUEST_FORCED_CELLULAR, |