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