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

Side by Side Diff: chrome/browser/prerender/prerender_unittest.cc

Issue 2275933002: Experiment to disable Prerendering with fast wind-down (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: DLOG(ERROR) Created 4 years, 3 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 7
8 #include <map> 8 #include <map>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 FindIteratorForPrerenderContents(prerender_data->contents()); 141 FindIteratorForPrerenderContents(prerender_data->contents());
142 CHECK(to_erase != active_prerenders_.end()); 142 CHECK(to_erase != active_prerenders_.end());
143 std::unique_ptr<PrerenderContents> prerender_contents = 143 std::unique_ptr<PrerenderContents> prerender_contents =
144 prerender_data->ReleaseContents(); 144 prerender_data->ReleaseContents();
145 active_prerenders_.erase(to_erase); 145 active_prerenders_.erase(to_erase);
146 146
147 prerender_contents->PrepareForUse(); 147 prerender_contents->PrepareForUse();
148 return prerender_contents; 148 return prerender_contents;
149 } 149 }
150 150
151 bool SetTime(const std::string& time_string) {
152 return base::Time::FromString(time_string.c_str(), &time_);
153 }
154
151 void AdvanceTime(TimeDelta delta) { 155 void AdvanceTime(TimeDelta delta) {
152 time_ += delta; 156 time_ += delta;
153 } 157 }
154 158
155 void AdvanceTimeTicks(TimeDelta delta) { 159 void AdvanceTimeTicks(TimeDelta delta) {
156 time_ticks_ += delta; 160 time_ticks_ += delta;
157 } 161 }
158 162
159 DummyPrerenderContents* CreateNextPrerenderContents( 163 DummyPrerenderContents* CreateNextPrerenderContents(
160 const GURL& url, 164 const GURL& url,
(...skipping 936 matching lines...) Expand 10 before | Expand all | Expand 10 after
1097 url, 1101 url,
1098 ORIGIN_EXTERNAL_REQUEST, 1102 ORIGIN_EXTERNAL_REQUEST,
1099 FINAL_STATUS_MANAGER_SHUTDOWN); 1103 FINAL_STATUS_MANAGER_SHUTDOWN);
1100 std::unique_ptr<PrerenderHandle> prerender_handle( 1104 std::unique_ptr<PrerenderHandle> prerender_handle(
1101 prerender_manager()->AddPrerenderFromExternalRequest( 1105 prerender_manager()->AddPrerenderFromExternalRequest(
1102 url, content::Referrer(), nullptr, gfx::Rect(kSize))); 1106 url, content::Referrer(), nullptr, gfx::Rect(kSize)));
1103 EXPECT_FALSE(prerender_handle); 1107 EXPECT_FALSE(prerender_handle);
1104 EXPECT_FALSE(prerender_contents->prerendering_has_started()); 1108 EXPECT_FALSE(prerender_contents->prerendering_has_started());
1105 } 1109 }
1106 1110
1111 // Checks that the "PrerenderSilence experiment does not disable offline
1112 // prerendering.
1113 TEST_F(PrerenderTest, PrerenderSilenceAllowsOffline) {
1114 // Set the time to 30 seconds before the experiment expires.
1115 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
1116 "PrerenderSilence", "ExperimentYes_expires_2016-12-20T00:01:00Z"));
1117 ASSERT_TRUE(prerender_manager()->SetTime("2016-12-20T00:00:30Z"));
1118 GURL url("http://www.google.com/");
1119 DummyPrerenderContents* prerender_contents =
1120 prerender_manager()->CreateNextPrerenderContents(
1121 url, ORIGIN_OFFLINE, FINAL_STATUS_MANAGER_SHUTDOWN);
1122 std::unique_ptr<PrerenderHandle> prerender_handle =
1123 prerender_manager()->AddPrerenderForOffline(url, nullptr, kSize);
1124 EXPECT_TRUE(prerender_handle);
1125 EXPECT_TRUE(prerender_handle->IsPrerendering());
1126 EXPECT_TRUE(prerender_contents->prerendering_has_started());
1127 EXPECT_EQ(prerender_contents, prerender_handle->contents());
1128 EXPECT_EQ(ORIGIN_OFFLINE, prerender_handle->contents()->origin());
1129 }
1130
1131 // Checks that the "PrerenderSilence" experiment disables prerendering.
1132 TEST_F(PrerenderTest, PrerenderSilenceDisallowsNonOffline) {
1133 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
1134 "PrerenderSilence", "ExperimentYes_expires_2016-12-20T00:02:00Z"));
1135 GURL url("http://www.google.com/");
1136 const Origin origins[] = {
1137 ORIGIN_GWS_PRERENDER,
1138 ORIGIN_OMNIBOX,
1139 ORIGIN_NONE,
1140 ORIGIN_LINK_REL_PRERENDER_SAMEDOMAIN,
1141 ORIGIN_LINK_REL_PRERENDER_CROSSDOMAIN,
1142 ORIGIN_EXTERNAL_REQUEST,
1143 ORIGIN_INSTANT,
1144 ORIGIN_LINK_REL_NEXT,
1145 ORIGIN_EXTERNAL_REQUEST_FORCED_CELLULAR,
1146 };
1147 ASSERT_TRUE(prerender_manager()->SetTime("2016-12-20T00:01:00Z"));
1148 for (const Origin& origin : origins) {
1149 std::unique_ptr<PrerenderHandle> prerender_handle(
1150 prerender_manager()->AddPrerender(origin, url, content::Referrer(),
1151 gfx::Rect(kSize), nullptr));
1152 EXPECT_FALSE(prerender_handle);
1153 }
1154 }
1155
1156 // Checks that prerendering is enabled after expiration of the
1157 // "PrerenderSilence" experiment.
1158 TEST_F(PrerenderTest, PrerenderSilenceAllowsAfterExpiration) {
1159 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
1160 "PrerenderSilence", "ExperimentYes_expires_2016-12-20T00:02:00Z"));
1161 GURL url("http://www.google.com/");
1162 ASSERT_TRUE(prerender_manager()->SetTime("2016-12-20T00:01:00Z"));
1163 prerender_manager()->AdvanceTime(TimeDelta::FromSeconds(60));
1164 DummyPrerenderContents* prerender_contents =
1165 prerender_manager()->CreateNextPrerenderContents(url, FINAL_STATUS_USED);
1166 EXPECT_TRUE(AddSimplePrerender(url));
1167 EXPECT_TRUE(prerender_contents->prerendering_has_started());
1168 std::unique_ptr<PrerenderContents> entry =
1169 prerender_manager()->FindAndUseEntry(url);
1170 ASSERT_EQ(prerender_contents, entry.get());
1171 }
1172
1107 TEST_F(PrerenderTest, PrerenderAllowedForOfflineAndForcedCellular) { 1173 TEST_F(PrerenderTest, PrerenderAllowedForOfflineAndForcedCellular) {
1108 const Origin origins[] = { 1174 const Origin origins[] = {
1109 ORIGIN_EXTERNAL_REQUEST_FORCED_CELLULAR, 1175 ORIGIN_EXTERNAL_REQUEST_FORCED_CELLULAR,
1110 ORIGIN_OFFLINE, 1176 ORIGIN_OFFLINE,
1111 }; 1177 };
1112 1178
1113 EnablePrerender(); 1179 EnablePrerender();
1114 std::unique_ptr<net::NetworkChangeNotifier> mock( 1180 std::unique_ptr<net::NetworkChangeNotifier> mock(
1115 new MockNetworkChangeNotifier4G); 1181 new MockNetworkChangeNotifier4G);
1116 EXPECT_TRUE(net::NetworkChangeNotifier::IsConnectionCellular( 1182 EXPECT_TRUE(net::NetworkChangeNotifier::IsConnectionCellular(
(...skipping 544 matching lines...) Expand 10 before | Expand all | Expand 10 after
1661 EXPECT_TRUE(prerender_contents->prerendering_has_started()); 1727 EXPECT_TRUE(prerender_contents->prerendering_has_started());
1662 EXPECT_EQ(prerender_contents, prerender_handle->contents()); 1728 EXPECT_EQ(prerender_contents, prerender_handle->contents());
1663 EXPECT_EQ(ORIGIN_INSTANT, prerender_handle->contents()->origin()); 1729 EXPECT_EQ(ORIGIN_INSTANT, prerender_handle->contents()->origin());
1664 std::unique_ptr<PrerenderContents> entry = 1730 std::unique_ptr<PrerenderContents> entry =
1665 prerender_manager()->FindAndUseEntry(url); 1731 prerender_manager()->FindAndUseEntry(url);
1666 ASSERT_EQ(prerender_contents, entry.get()); 1732 ASSERT_EQ(prerender_contents, entry.get());
1667 EXPECT_FALSE(prerender_handle->IsPrerendering()); 1733 EXPECT_FALSE(prerender_handle->IsPrerendering());
1668 } 1734 }
1669 1735
1670 } // namespace prerender 1736 } // namespace prerender
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698