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

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: remove FRIEND_TEST_ALL_PREFIXES 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
« no previous file with comments | « chrome/browser/prerender/prerender_manager.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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"));
mmenke 2016/08/26 16:44:47 Do we really want a unit test with an expiration d
pasko 2016/08/26 17:39:31 I do not follow how release channel can be relevan
mmenke 2016/08/26 18:15:40 Ahh, I missed that. Channel is relevant because i
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 const Origin origins[] = {
1136 ORIGIN_GWS_PRERENDER,
1137 ORIGIN_OMNIBOX,
1138 ORIGIN_NONE,
1139 ORIGIN_LINK_REL_PRERENDER_SAMEDOMAIN,
1140 ORIGIN_LINK_REL_PRERENDER_CROSSDOMAIN,
1141 ORIGIN_EXTERNAL_REQUEST,
1142 ORIGIN_INSTANT,
1143 ORIGIN_LINK_REL_NEXT,
1144 ORIGIN_EXTERNAL_REQUEST_FORCED_CELLULAR,
1145 };
1146 ASSERT_TRUE(prerender_manager()->SetTime("2016-12-20T00:01:00Z"));
1147 for (const Origin& origin : origins) {
1148 EXPECT_TRUE(
1149 prerender_manager()->IsPrerenderSilenceExperimentForTesting(origin));
1150 }
1151 }
1152
1153 // Checks that prerendering is enabled after expiration of the
1154 // "PrerenderSilence" experiment.
1155 TEST_F(PrerenderTest, PrerenderSilenceAllowsAfterExpiration) {
1156 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
1157 "PrerenderSilence", "ExperimentYes_expires_2016-12-20T00:02:00Z"));
1158 GURL url("http://www.google.com/");
1159 ASSERT_TRUE(prerender_manager()->SetTime("2016-12-20T00:01:00Z"));
1160 prerender_manager()->AdvanceTime(TimeDelta::FromSeconds(60));
1161 DummyPrerenderContents* prerender_contents =
1162 prerender_manager()->CreateNextPrerenderContents(url, FINAL_STATUS_USED);
1163 EXPECT_TRUE(AddSimplePrerender(url));
1164 EXPECT_TRUE(prerender_contents->prerendering_has_started());
1165 std::unique_ptr<PrerenderContents> entry =
1166 prerender_manager()->FindAndUseEntry(url);
1167 ASSERT_EQ(prerender_contents, entry.get());
1168 }
1169
1107 TEST_F(PrerenderTest, PrerenderAllowedForOfflineAndForcedCellular) { 1170 TEST_F(PrerenderTest, PrerenderAllowedForOfflineAndForcedCellular) {
1108 const Origin origins[] = { 1171 const Origin origins[] = {
1109 ORIGIN_EXTERNAL_REQUEST_FORCED_CELLULAR, 1172 ORIGIN_EXTERNAL_REQUEST_FORCED_CELLULAR,
1110 ORIGIN_OFFLINE, 1173 ORIGIN_OFFLINE,
1111 }; 1174 };
1112 1175
1113 EnablePrerender(); 1176 EnablePrerender();
1114 std::unique_ptr<net::NetworkChangeNotifier> mock( 1177 std::unique_ptr<net::NetworkChangeNotifier> mock(
1115 new MockNetworkChangeNotifier4G); 1178 new MockNetworkChangeNotifier4G);
1116 EXPECT_TRUE(net::NetworkChangeNotifier::IsConnectionCellular( 1179 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()); 1724 EXPECT_TRUE(prerender_contents->prerendering_has_started());
1662 EXPECT_EQ(prerender_contents, prerender_handle->contents()); 1725 EXPECT_EQ(prerender_contents, prerender_handle->contents());
1663 EXPECT_EQ(ORIGIN_INSTANT, prerender_handle->contents()->origin()); 1726 EXPECT_EQ(ORIGIN_INSTANT, prerender_handle->contents()->origin());
1664 std::unique_ptr<PrerenderContents> entry = 1727 std::unique_ptr<PrerenderContents> entry =
1665 prerender_manager()->FindAndUseEntry(url); 1728 prerender_manager()->FindAndUseEntry(url);
1666 ASSERT_EQ(prerender_contents, entry.get()); 1729 ASSERT_EQ(prerender_contents, entry.get());
1667 EXPECT_FALSE(prerender_handle->IsPrerendering()); 1730 EXPECT_FALSE(prerender_handle->IsPrerendering());
1668 } 1731 }
1669 1732
1670 } // namespace prerender 1733 } // namespace prerender
OLDNEW
« no previous file with comments | « chrome/browser/prerender/prerender_manager.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698