OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 |
OLD | NEW |