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

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: rebase Created 4 years, 4 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 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
1112 // Set the time to 30 seconds before the experiment expires.
1113 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
1114 "PrerenderSilence", "ExperimentYes_expires_2016-12-20T00:01:00Z"));
1115 ASSERT_TRUE(prerender_manager()->SetTime("2016-12-20T00:00:30Z"));
1116 GURL url("http://www.google.com/");
1117 DummyPrerenderContents* prerender_contents =
1118 prerender_manager()->CreateNextPrerenderContents(
1119 url, ORIGIN_OFFLINE, FINAL_STATUS_MANAGER_SHUTDOWN);
1120 std::unique_ptr<PrerenderHandle> prerender_handle =
1121 prerender_manager()->AddPrerenderForOffline(url, nullptr, kSize);
1122 EXPECT_TRUE(prerender_handle);
1123 EXPECT_TRUE(prerender_handle->IsPrerendering());
1124 EXPECT_TRUE(prerender_contents->prerendering_has_started());
1125 EXPECT_EQ(prerender_contents, prerender_handle->contents());
1126 EXPECT_EQ(ORIGIN_OFFLINE, prerender_handle->contents()->origin());
1127 }
1128
1129 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.
1130 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
1131 "PrerenderSilence", "ExperimentYes_expires_2016-12-20T00:02:00Z"));
1132 GURL url("http://www.google.com/");
1133 const Origin origins[] = {
1134 ORIGIN_GWS_PRERENDER,
1135 ORIGIN_OMNIBOX,
1136 ORIGIN_NONE,
1137 ORIGIN_LINK_REL_PRERENDER_SAMEDOMAIN,
1138 ORIGIN_LINK_REL_PRERENDER_CROSSDOMAIN,
1139 ORIGIN_EXTERNAL_REQUEST,
1140 ORIGIN_INSTANT,
1141 ORIGIN_LINK_REL_NEXT,
1142 ORIGIN_EXTERNAL_REQUEST_FORCED_CELLULAR,
1143 };
1144 ASSERT_TRUE(prerender_manager()->SetTime("2016-12-20T00:01:00Z"));
1145 for (const Origin& origin : origins) {
1146 std::unique_ptr<PrerenderHandle> prerender_handle(
1147 prerender_manager()->AddPrerender(origin, url, content::Referrer(),
1148 gfx::Rect(kSize), nullptr));
1149 EXPECT_FALSE(prerender_handle);
1150 }
1151 }
1152
1153 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.
1154 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
1155 "PrerenderSilence", "ExperimentYes_expires_2016-12-20T00:02:00Z"));
1156 GURL url("http://www.google.com/");
1157 ASSERT_TRUE(prerender_manager()->SetTime("2016-12-20T00:01:00Z"));
1158 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
1159 DummyPrerenderContents* prerender_contents =
1160 prerender_manager()->CreateNextPrerenderContents(url, FINAL_STATUS_USED);
1161 EXPECT_TRUE(AddSimplePrerender(url));
1162 EXPECT_TRUE(prerender_contents->prerendering_has_started());
1163 std::unique_ptr<PrerenderContents> entry =
1164 prerender_manager()->FindAndUseEntry(url);
1165 ASSERT_EQ(prerender_contents, entry.get());
1166 }
1167
1107 TEST_F(PrerenderTest, PrerenderAllowedForOfflineAndForcedCellular) { 1168 TEST_F(PrerenderTest, PrerenderAllowedForOfflineAndForcedCellular) {
1108 const Origin origins[] = { 1169 const Origin origins[] = {
1109 ORIGIN_EXTERNAL_REQUEST_FORCED_CELLULAR, 1170 ORIGIN_EXTERNAL_REQUEST_FORCED_CELLULAR,
1110 ORIGIN_OFFLINE, 1171 ORIGIN_OFFLINE,
1111 }; 1172 };
1112 1173
1113 EnablePrerender(); 1174 EnablePrerender();
1114 std::unique_ptr<net::NetworkChangeNotifier> mock( 1175 std::unique_ptr<net::NetworkChangeNotifier> mock(
1115 new MockNetworkChangeNotifier4G); 1176 new MockNetworkChangeNotifier4G);
1116 EXPECT_TRUE(net::NetworkChangeNotifier::IsConnectionCellular( 1177 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()); 1722 EXPECT_TRUE(prerender_contents->prerendering_has_started());
1662 EXPECT_EQ(prerender_contents, prerender_handle->contents()); 1723 EXPECT_EQ(prerender_contents, prerender_handle->contents());
1663 EXPECT_EQ(ORIGIN_INSTANT, prerender_handle->contents()->origin()); 1724 EXPECT_EQ(ORIGIN_INSTANT, prerender_handle->contents()->origin());
1664 std::unique_ptr<PrerenderContents> entry = 1725 std::unique_ptr<PrerenderContents> entry =
1665 prerender_manager()->FindAndUseEntry(url); 1726 prerender_manager()->FindAndUseEntry(url);
1666 ASSERT_EQ(prerender_contents, entry.get()); 1727 ASSERT_EQ(prerender_contents, entry.get());
1667 EXPECT_FALSE(prerender_handle->IsPrerendering()); 1728 EXPECT_FALSE(prerender_handle->IsPrerendering());
1668 } 1729 }
1669 1730
1670 } // namespace prerender 1731 } // 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