OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "base/memory/scoped_vector.h" | 5 #include "base/memory/scoped_vector.h" |
6 #include "base/time.h" | 6 #include "base/time.h" |
7 #include "chrome/browser/prerender/prerender_contents.h" | 7 #include "chrome/browser/prerender/prerender_contents.h" |
8 #include "chrome/browser/prerender/prerender_manager.h" | 8 #include "chrome/browser/prerender/prerender_manager.h" |
9 #include "chrome/test/testing_browser_process.h" | 9 #include "chrome/test/testing_browser_process.h" |
10 #include "content/browser/browser_thread.h" | 10 #include "content/browser/browser_thread.h" |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
111 expected_final_status); | 111 expected_final_status); |
112 for (std::vector<GURL>::const_iterator it = alias_urls.begin(); | 112 for (std::vector<GURL>::const_iterator it = alias_urls.begin(); |
113 it != alias_urls.end(); | 113 it != alias_urls.end(); |
114 ++it) { | 114 ++it) { |
115 EXPECT_TRUE(prerender_contents->AddAliasURL(*it)); | 115 EXPECT_TRUE(prerender_contents->AddAliasURL(*it)); |
116 } | 116 } |
117 SetNextPrerenderContents(prerender_contents); | 117 SetNextPrerenderContents(prerender_contents); |
118 return prerender_contents; | 118 return prerender_contents; |
119 } | 119 } |
120 | 120 |
121 // Shorthand to add a simple preload with no aliases. | |
122 bool AddSimplePreload(const GURL& url) { | |
123 return AddPreload(std::pair<int, int>(-1, -1), url, GURL()); | |
124 } | |
125 | |
126 bool IsPendingEntry(const GURL& url) { | 121 bool IsPendingEntry(const GURL& url) { |
127 return (PrerenderManager::FindPendingEntry(url) != NULL); | 122 return (PrerenderManager::FindPendingEntry(url) != NULL); |
128 } | 123 } |
129 | 124 |
130 void set_rate_limit_enabled(bool enabled) { rate_limit_enabled_ = true; } | 125 void set_rate_limit_enabled(bool enabled) { rate_limit_enabled_ = true; } |
131 | 126 |
132 PrerenderContents* next_prerender_contents() { | 127 PrerenderContents* next_prerender_contents() { |
133 return next_prerender_contents_.get(); | 128 return next_prerender_contents_.get(); |
134 } | 129 } |
135 | 130 |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
205 GURL url("http://www.google.com/"); | 200 GURL url("http://www.google.com/"); |
206 EXPECT_FALSE(prerender_manager()->MaybeUsePreloadedPage(NULL, url, false)); | 201 EXPECT_FALSE(prerender_manager()->MaybeUsePreloadedPage(NULL, url, false)); |
207 } | 202 } |
208 | 203 |
209 TEST_F(PrerenderManagerTest, FoundTest) { | 204 TEST_F(PrerenderManagerTest, FoundTest) { |
210 GURL url("http://www.google.com/"); | 205 GURL url("http://www.google.com/"); |
211 DummyPrerenderContents* prerender_contents = | 206 DummyPrerenderContents* prerender_contents = |
212 prerender_manager()->CreateNextPrerenderContents( | 207 prerender_manager()->CreateNextPrerenderContents( |
213 url, | 208 url, |
214 FINAL_STATUS_USED); | 209 FINAL_STATUS_USED); |
215 EXPECT_TRUE(prerender_manager()->AddSimplePreload(url)); | 210 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(url)); |
216 EXPECT_TRUE(prerender_contents->has_started()); | 211 EXPECT_TRUE(prerender_contents->has_started()); |
217 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); | 212 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); |
218 } | 213 } |
219 | 214 |
220 // Make sure that if queue a request, and a second prerender request for the | 215 // Make sure that if queue a request, and a second prerender request for the |
221 // same URL comes in, that we drop the second request and keep the first one. | 216 // same URL comes in, that we drop the second request and keep the first one. |
222 TEST_F(PrerenderManagerTest, DropSecondRequestTest) { | 217 TEST_F(PrerenderManagerTest, DropSecondRequestTest) { |
223 GURL url("http://www.google.com/"); | 218 GURL url("http://www.google.com/"); |
224 DummyPrerenderContents* prerender_contents = | 219 DummyPrerenderContents* prerender_contents = |
225 prerender_manager()->CreateNextPrerenderContents( | 220 prerender_manager()->CreateNextPrerenderContents( |
226 url, | 221 url, |
227 FINAL_STATUS_USED); | 222 FINAL_STATUS_USED); |
228 DummyPrerenderContents* null = NULL; | 223 DummyPrerenderContents* null = NULL; |
229 EXPECT_TRUE(prerender_manager()->AddSimplePreload(url)); | 224 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(url)); |
230 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); | 225 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); |
231 EXPECT_TRUE(prerender_contents->has_started()); | 226 EXPECT_TRUE(prerender_contents->has_started()); |
232 | 227 |
233 DummyPrerenderContents* prerender_contents1 = | 228 DummyPrerenderContents* prerender_contents1 = |
234 prerender_manager()->CreateNextPrerenderContents( | 229 prerender_manager()->CreateNextPrerenderContents( |
235 url, | 230 url, |
236 FINAL_STATUS_MANAGER_SHUTDOWN); | 231 FINAL_STATUS_MANAGER_SHUTDOWN); |
237 EXPECT_FALSE(prerender_manager()->AddSimplePreload(url)); | 232 EXPECT_FALSE(prerender_manager()->AddPrerenderWithNoTag(url)); |
238 EXPECT_EQ(prerender_contents1, | 233 EXPECT_EQ(prerender_contents1, |
239 prerender_manager()->next_prerender_contents()); | 234 prerender_manager()->next_prerender_contents()); |
240 EXPECT_FALSE(prerender_contents1->has_started()); | 235 EXPECT_FALSE(prerender_contents1->has_started()); |
241 | 236 |
242 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); | 237 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); |
243 } | 238 } |
244 | 239 |
245 // Ensure that we expire a prerendered page after the max. permitted time. | 240 // Ensure that we expire a prerendered page after the max. permitted time. |
246 TEST_F(PrerenderManagerTest, ExpireTest) { | 241 TEST_F(PrerenderManagerTest, ExpireTest) { |
247 GURL url("http://www.google.com/"); | 242 GURL url("http://www.google.com/"); |
248 DummyPrerenderContents* prerender_contents = | 243 DummyPrerenderContents* prerender_contents = |
249 prerender_manager()->CreateNextPrerenderContents( | 244 prerender_manager()->CreateNextPrerenderContents( |
250 url, | 245 url, |
251 FINAL_STATUS_TIMED_OUT); | 246 FINAL_STATUS_TIMED_OUT); |
252 DummyPrerenderContents* null = NULL; | 247 DummyPrerenderContents* null = NULL; |
253 EXPECT_TRUE(prerender_manager()->AddSimplePreload(url)); | 248 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(url)); |
254 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); | 249 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); |
255 EXPECT_TRUE(prerender_contents->has_started()); | 250 EXPECT_TRUE(prerender_contents->has_started()); |
256 prerender_manager()->AdvanceTime(prerender_manager()->max_prerender_age() | 251 prerender_manager()->AdvanceTime(prerender_manager()->max_prerender_age() |
257 + base::TimeDelta::FromSeconds(1)); | 252 + base::TimeDelta::FromSeconds(1)); |
258 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); | 253 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); |
259 } | 254 } |
260 | 255 |
261 // LRU Test. Make sure that if we prerender more than one request, that | 256 // LRU Test. Make sure that if we prerender more than one request, that |
262 // the oldest one will be dropped. | 257 // the oldest one will be dropped. |
263 TEST_F(PrerenderManagerTest, DropOldestRequestTest) { | 258 TEST_F(PrerenderManagerTest, DropOldestRequestTest) { |
264 GURL url("http://www.google.com/"); | 259 GURL url("http://www.google.com/"); |
265 DummyPrerenderContents* prerender_contents = | 260 DummyPrerenderContents* prerender_contents = |
266 prerender_manager()->CreateNextPrerenderContents( | 261 prerender_manager()->CreateNextPrerenderContents( |
267 url, | 262 url, |
268 FINAL_STATUS_EVICTED); | 263 FINAL_STATUS_EVICTED); |
269 DummyPrerenderContents* null = NULL; | 264 DummyPrerenderContents* null = NULL; |
270 EXPECT_TRUE(prerender_manager()->AddSimplePreload(url)); | 265 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(url)); |
271 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); | 266 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); |
272 EXPECT_TRUE(prerender_contents->has_started()); | 267 EXPECT_TRUE(prerender_contents->has_started()); |
273 | 268 |
274 GURL url1("http://news.google.com/"); | 269 GURL url1("http://news.google.com/"); |
275 DummyPrerenderContents* prerender_contents1 = | 270 DummyPrerenderContents* prerender_contents1 = |
276 prerender_manager()->CreateNextPrerenderContents( | 271 prerender_manager()->CreateNextPrerenderContents( |
277 url1, | 272 url1, |
278 FINAL_STATUS_USED); | 273 FINAL_STATUS_USED); |
279 EXPECT_TRUE(prerender_manager()->AddSimplePreload(url1)); | 274 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(url1)); |
280 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); | 275 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); |
281 EXPECT_TRUE(prerender_contents1->has_started()); | 276 EXPECT_TRUE(prerender_contents1->has_started()); |
282 | 277 |
283 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); | 278 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); |
284 ASSERT_EQ(prerender_contents1, prerender_manager()->GetEntry(url1)); | 279 ASSERT_EQ(prerender_contents1, prerender_manager()->GetEntry(url1)); |
285 } | 280 } |
286 | 281 |
287 // Two element prerender test. Ensure that the LRU operates correctly if we | 282 // Two element prerender test. Ensure that the LRU operates correctly if we |
288 // permit 2 elements to be kept prerendered. | 283 // permit 2 elements to be kept prerendered. |
289 TEST_F(PrerenderManagerTest, TwoElementPrerenderTest) { | 284 TEST_F(PrerenderManagerTest, TwoElementPrerenderTest) { |
290 prerender_manager()->set_max_elements(2); | 285 prerender_manager()->set_max_elements(2); |
291 GURL url("http://www.google.com/"); | 286 GURL url("http://www.google.com/"); |
292 DummyPrerenderContents* prerender_contents = | 287 DummyPrerenderContents* prerender_contents = |
293 prerender_manager()->CreateNextPrerenderContents( | 288 prerender_manager()->CreateNextPrerenderContents( |
294 url, | 289 url, |
295 FINAL_STATUS_EVICTED); | 290 FINAL_STATUS_EVICTED); |
296 DummyPrerenderContents* null = NULL; | 291 DummyPrerenderContents* null = NULL; |
297 EXPECT_TRUE(prerender_manager()->AddSimplePreload(url)); | 292 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(url)); |
298 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); | 293 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); |
299 EXPECT_TRUE(prerender_contents->has_started()); | 294 EXPECT_TRUE(prerender_contents->has_started()); |
300 | 295 |
301 GURL url1("http://news.google.com/"); | 296 GURL url1("http://news.google.com/"); |
302 DummyPrerenderContents* prerender_contents1 = | 297 DummyPrerenderContents* prerender_contents1 = |
303 prerender_manager()->CreateNextPrerenderContents( | 298 prerender_manager()->CreateNextPrerenderContents( |
304 url1, | 299 url1, |
305 FINAL_STATUS_USED); | 300 FINAL_STATUS_USED); |
306 EXPECT_TRUE(prerender_manager()->AddSimplePreload(url1)); | 301 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(url1)); |
307 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); | 302 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); |
308 EXPECT_TRUE(prerender_contents1->has_started()); | 303 EXPECT_TRUE(prerender_contents1->has_started()); |
309 | 304 |
310 GURL url2("http://images.google.com/"); | 305 GURL url2("http://images.google.com/"); |
311 DummyPrerenderContents* prerender_contents2 = | 306 DummyPrerenderContents* prerender_contents2 = |
312 prerender_manager()->CreateNextPrerenderContents( | 307 prerender_manager()->CreateNextPrerenderContents( |
313 url2, | 308 url2, |
314 FINAL_STATUS_USED); | 309 FINAL_STATUS_USED); |
315 EXPECT_TRUE(prerender_manager()->AddSimplePreload(url2)); | 310 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(url2)); |
316 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); | 311 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); |
317 EXPECT_TRUE(prerender_contents2->has_started()); | 312 EXPECT_TRUE(prerender_contents2->has_started()); |
318 | 313 |
319 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); | 314 ASSERT_EQ(null, prerender_manager()->GetEntry(url)); |
320 ASSERT_EQ(prerender_contents1, prerender_manager()->GetEntry(url1)); | 315 ASSERT_EQ(prerender_contents1, prerender_manager()->GetEntry(url1)); |
321 ASSERT_EQ(prerender_contents2, prerender_manager()->GetEntry(url2)); | 316 ASSERT_EQ(prerender_contents2, prerender_manager()->GetEntry(url2)); |
322 } | 317 } |
323 | 318 |
324 TEST_F(PrerenderManagerTest, AliasURLTest) { | 319 TEST_F(PrerenderManagerTest, AliasURLTest) { |
325 GURL url("http://www.google.com/"); | 320 GURL url("http://www.google.com/"); |
326 GURL alias_url1("http://www.google.com/index.html"); | 321 GURL alias_url1("http://www.google.com/index.html"); |
327 GURL alias_url2("http://google.com/"); | 322 GURL alias_url2("http://google.com/"); |
328 GURL not_an_alias_url("http://google.com/index.html"); | 323 GURL not_an_alias_url("http://google.com/index.html"); |
329 std::vector<GURL> alias_urls; | 324 std::vector<GURL> alias_urls; |
330 alias_urls.push_back(alias_url1); | 325 alias_urls.push_back(alias_url1); |
331 alias_urls.push_back(alias_url2); | 326 alias_urls.push_back(alias_url2); |
332 | 327 |
333 // Test that all of the aliases work, but not_an_alias_url does not. | 328 // Test that all of the aliases work, but not_an_alias_url does not. |
334 DummyPrerenderContents* prerender_contents = | 329 DummyPrerenderContents* prerender_contents = |
335 prerender_manager()->CreateNextPrerenderContents( | 330 prerender_manager()->CreateNextPrerenderContents( |
336 url, alias_urls, FINAL_STATUS_USED); | 331 url, alias_urls, FINAL_STATUS_USED); |
337 EXPECT_TRUE(prerender_manager()->AddSimplePreload(url)); | 332 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(url)); |
338 ASSERT_EQ(NULL, prerender_manager()->GetEntry(not_an_alias_url)); | 333 ASSERT_EQ(NULL, prerender_manager()->GetEntry(not_an_alias_url)); |
339 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(alias_url1)); | 334 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(alias_url1)); |
340 prerender_contents = prerender_manager()->CreateNextPrerenderContents( | 335 prerender_contents = prerender_manager()->CreateNextPrerenderContents( |
341 url, alias_urls, FINAL_STATUS_USED); | 336 url, alias_urls, FINAL_STATUS_USED); |
342 EXPECT_TRUE(prerender_manager()->AddSimplePreload(url)); | 337 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(url)); |
343 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(alias_url2)); | 338 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(alias_url2)); |
344 prerender_contents = prerender_manager()->CreateNextPrerenderContents( | 339 prerender_contents = prerender_manager()->CreateNextPrerenderContents( |
345 url, alias_urls, FINAL_STATUS_USED); | 340 url, alias_urls, FINAL_STATUS_USED); |
346 EXPECT_TRUE(prerender_manager()->AddSimplePreload(url)); | 341 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(url)); |
347 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); | 342 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); |
348 | 343 |
349 // Test that alias URLs can not be added. | 344 // Test that alias URLs can not be added. |
350 prerender_contents = prerender_manager()->CreateNextPrerenderContents( | 345 prerender_contents = prerender_manager()->CreateNextPrerenderContents( |
351 url, alias_urls, FINAL_STATUS_USED); | 346 url, alias_urls, FINAL_STATUS_USED); |
352 EXPECT_TRUE(prerender_manager()->AddSimplePreload(url)); | 347 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(url)); |
353 EXPECT_FALSE(prerender_manager()->AddSimplePreload(url)); | 348 EXPECT_FALSE(prerender_manager()->AddPrerenderWithNoTag(url)); |
354 EXPECT_FALSE(prerender_manager()->AddSimplePreload(alias_url1)); | 349 EXPECT_FALSE(prerender_manager()->AddPrerenderWithNoTag(alias_url1)); |
355 EXPECT_FALSE(prerender_manager()->AddSimplePreload(alias_url2)); | 350 EXPECT_FALSE(prerender_manager()->AddPrerenderWithNoTag(alias_url2)); |
356 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); | 351 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); |
357 } | 352 } |
358 | 353 |
359 // Ensure that we ignore prerender requests within the rate limit. | 354 // Ensure that we ignore prerender requests within the rate limit. |
360 TEST_F(PrerenderManagerTest, RateLimitInWindowTest) { | 355 TEST_F(PrerenderManagerTest, RateLimitInWindowTest) { |
361 GURL url("http://www.google.com/"); | 356 GURL url("http://www.google.com/"); |
362 DummyPrerenderContents* prerender_contents = | 357 DummyPrerenderContents* prerender_contents = |
363 prerender_manager()->CreateNextPrerenderContents( | 358 prerender_manager()->CreateNextPrerenderContents( |
364 url, | 359 url, |
365 FINAL_STATUS_MANAGER_SHUTDOWN); | 360 FINAL_STATUS_MANAGER_SHUTDOWN); |
366 DummyPrerenderContents* null = NULL; | 361 DummyPrerenderContents* null = NULL; |
367 EXPECT_TRUE(prerender_manager()->AddSimplePreload(url)); | 362 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(url)); |
368 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); | 363 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); |
369 EXPECT_TRUE(prerender_contents->has_started()); | 364 EXPECT_TRUE(prerender_contents->has_started()); |
370 | 365 |
371 prerender_manager()->set_rate_limit_enabled(true); | 366 prerender_manager()->set_rate_limit_enabled(true); |
372 prerender_manager()->AdvanceTimeTicks(base::TimeDelta::FromMilliseconds(1)); | 367 prerender_manager()->AdvanceTimeTicks(base::TimeDelta::FromMilliseconds(1)); |
373 | 368 |
374 GURL url1("http://news.google.com/"); | 369 GURL url1("http://news.google.com/"); |
375 prerender_manager()->CreateNextPrerenderContents( | 370 prerender_manager()->CreateNextPrerenderContents( |
376 url, | 371 url, |
377 FINAL_STATUS_MANAGER_SHUTDOWN); | 372 FINAL_STATUS_MANAGER_SHUTDOWN); |
378 EXPECT_FALSE(prerender_manager()->AddSimplePreload(url1)); | 373 EXPECT_FALSE(prerender_manager()->AddPrerenderWithNoTag(url1)); |
379 prerender_manager()->set_rate_limit_enabled(false); | 374 prerender_manager()->set_rate_limit_enabled(false); |
380 } | 375 } |
381 | 376 |
382 // Ensure that we don't ignore prerender requests outside the rate limit. | 377 // Ensure that we don't ignore prerender requests outside the rate limit. |
383 TEST_F(PrerenderManagerTest, RateLimitOutsideWindowTest) { | 378 TEST_F(PrerenderManagerTest, RateLimitOutsideWindowTest) { |
384 GURL url("http://www.google.com/"); | 379 GURL url("http://www.google.com/"); |
385 DummyPrerenderContents* prerender_contents = | 380 DummyPrerenderContents* prerender_contents = |
386 prerender_manager()->CreateNextPrerenderContents( | 381 prerender_manager()->CreateNextPrerenderContents( |
387 url, | 382 url, |
388 FINAL_STATUS_EVICTED); | 383 FINAL_STATUS_EVICTED); |
389 DummyPrerenderContents* null = NULL; | 384 DummyPrerenderContents* null = NULL; |
390 EXPECT_TRUE(prerender_manager()->AddSimplePreload(url)); | 385 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(url)); |
391 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); | 386 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); |
392 EXPECT_TRUE(prerender_contents->has_started()); | 387 EXPECT_TRUE(prerender_contents->has_started()); |
393 | 388 |
394 prerender_manager()->set_rate_limit_enabled(true); | 389 prerender_manager()->set_rate_limit_enabled(true); |
395 prerender_manager()->AdvanceTimeTicks( | 390 prerender_manager()->AdvanceTimeTicks( |
396 base::TimeDelta::FromMilliseconds(2000)); | 391 base::TimeDelta::FromMilliseconds(2000)); |
397 | 392 |
398 GURL url1("http://news.google.com/"); | 393 GURL url1("http://news.google.com/"); |
399 DummyPrerenderContents* rate_limit_prerender_contents = | 394 DummyPrerenderContents* rate_limit_prerender_contents = |
400 prerender_manager()->CreateNextPrerenderContents( | 395 prerender_manager()->CreateNextPrerenderContents( |
401 url1, | 396 url1, |
402 FINAL_STATUS_MANAGER_SHUTDOWN); | 397 FINAL_STATUS_MANAGER_SHUTDOWN); |
403 EXPECT_TRUE(prerender_manager()->AddSimplePreload(url1)); | 398 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(url1)); |
404 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); | 399 EXPECT_EQ(null, prerender_manager()->next_prerender_contents()); |
405 EXPECT_TRUE(rate_limit_prerender_contents->has_started()); | 400 EXPECT_TRUE(rate_limit_prerender_contents->has_started()); |
406 prerender_manager()->set_rate_limit_enabled(false); | 401 prerender_manager()->set_rate_limit_enabled(false); |
407 } | 402 } |
408 | 403 |
409 TEST_F(PrerenderManagerTest, PendingPreloadTest) { | 404 TEST_F(PrerenderManagerTest, PendingPreloadTest) { |
410 GURL url("http://www.google.com/"); | 405 GURL url("http://www.google.com/"); |
411 DummyPrerenderContents* prerender_contents = | 406 DummyPrerenderContents* prerender_contents = |
412 prerender_manager()->CreateNextPrerenderContents( | 407 prerender_manager()->CreateNextPrerenderContents( |
413 url, | 408 url, |
414 FINAL_STATUS_USED); | 409 FINAL_STATUS_USED); |
415 EXPECT_TRUE(prerender_manager()->AddSimplePreload(url)); | 410 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(url)); |
416 | 411 |
417 int child_id; | 412 int child_id; |
418 int route_id; | 413 int route_id; |
419 ASSERT_TRUE(prerender_contents->GetChildId(&child_id)); | 414 ASSERT_TRUE(prerender_contents->GetChildId(&child_id)); |
420 ASSERT_TRUE(prerender_contents->GetRouteId(&route_id)); | 415 ASSERT_TRUE(prerender_contents->GetRouteId(&route_id)); |
421 | 416 |
422 GURL pending_url("http://news.google.com/"); | 417 GURL pending_url("http://news.google.com/"); |
423 | 418 |
424 EXPECT_TRUE( | 419 EXPECT_TRUE( |
425 prerender_manager()->AddPreload(std::make_pair(child_id, route_id), | 420 prerender_manager()->AddPreload(std::make_pair(child_id, route_id), |
(...skipping 27 matching lines...) Expand all Loading... |
453 // group will not be able to override FINAL_STATUS_CONTROL_GROUP. | 448 // group will not be able to override FINAL_STATUS_CONTROL_GROUP. |
454 TEST_F(PrerenderManagerTest, ControlGroup) { | 449 TEST_F(PrerenderManagerTest, ControlGroup) { |
455 RestorePrerenderMode restore_prerender_mode; | 450 RestorePrerenderMode restore_prerender_mode; |
456 PrerenderManager::SetMode( | 451 PrerenderManager::SetMode( |
457 PrerenderManager::PRERENDER_MODE_EXPERIMENT_CONTROL_GROUP); | 452 PrerenderManager::PRERENDER_MODE_EXPERIMENT_CONTROL_GROUP); |
458 GURL url("http://www.google.com/"); | 453 GURL url("http://www.google.com/"); |
459 DummyPrerenderContents* prerender_contents = | 454 DummyPrerenderContents* prerender_contents = |
460 prerender_manager()->CreateNextPrerenderContents( | 455 prerender_manager()->CreateNextPrerenderContents( |
461 url, | 456 url, |
462 FINAL_STATUS_CONTROL_GROUP); | 457 FINAL_STATUS_CONTROL_GROUP); |
463 EXPECT_TRUE(prerender_manager()->AddSimplePreload(url)); | 458 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(url)); |
464 EXPECT_FALSE(prerender_contents->has_started()); | 459 EXPECT_FALSE(prerender_contents->has_started()); |
465 } | 460 } |
466 | 461 |
467 // Tests that prerendering is cancelled when the source render view does not | 462 // Tests that prerendering is cancelled when the source render view does not |
468 // exist. On failure, the DCHECK in CreatePrerenderContents() above should be | 463 // exist. On failure, the DCHECK in CreatePrerenderContents() above should be |
469 // triggered. | 464 // triggered. |
470 TEST_F(PrerenderManagerTest, SourceRenderViewClosed) { | 465 TEST_F(PrerenderManagerTest, SourceRenderViewClosed) { |
471 GURL url("http://www.google.com/"); | 466 GURL url("http://www.google.com/"); |
472 prerender_manager()->CreateNextPrerenderContents( | 467 prerender_manager()->CreateNextPrerenderContents( |
473 url, | 468 url, |
474 FINAL_STATUS_MANAGER_SHUTDOWN); | 469 FINAL_STATUS_MANAGER_SHUTDOWN); |
475 EXPECT_FALSE(prerender_manager()->AddPreload( | 470 EXPECT_FALSE(prerender_manager()->AddPreload( |
476 std::pair<int, int>(100, 100), url, GURL())); | 471 std::pair<int, int>(100, 100), url, GURL())); |
477 } | 472 } |
478 | 473 |
479 // Tests that the prerender manager ignores fragment references when matching | 474 // Tests that the prerender manager ignores fragment references when matching |
480 // prerender URLs in the case the fragment is not in the prerender URL. | 475 // prerender URLs in the case the fragment is not in the prerender URL. |
481 TEST_F(PrerenderManagerTest, PageMatchesFragmentTest) { | 476 TEST_F(PrerenderManagerTest, PageMatchesFragmentTest) { |
482 GURL url("http://www.google.com/"); | 477 GURL url("http://www.google.com/"); |
483 GURL fragment_url("http://www.google.com/#test"); | 478 GURL fragment_url("http://www.google.com/#test"); |
484 | 479 |
485 DummyPrerenderContents* prerender_contents = | 480 DummyPrerenderContents* prerender_contents = |
486 prerender_manager()->CreateNextPrerenderContents(url, | 481 prerender_manager()->CreateNextPrerenderContents(url, |
487 FINAL_STATUS_USED); | 482 FINAL_STATUS_USED); |
488 EXPECT_TRUE(prerender_manager()->AddSimplePreload(url)); | 483 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(url)); |
489 EXPECT_TRUE(prerender_contents->has_started()); | 484 EXPECT_TRUE(prerender_contents->has_started()); |
490 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(fragment_url)); | 485 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(fragment_url)); |
491 } | 486 } |
492 | 487 |
493 // Tests that the prerender manager ignores fragment references when matching | 488 // Tests that the prerender manager ignores fragment references when matching |
494 // prerender URLs in the case the fragment is in the prerender URL. | 489 // prerender URLs in the case the fragment is in the prerender URL. |
495 TEST_F(PrerenderManagerTest, FragmentMatchesPageTest) { | 490 TEST_F(PrerenderManagerTest, FragmentMatchesPageTest) { |
496 GURL url("http://www.google.com/"); | 491 GURL url("http://www.google.com/"); |
497 GURL fragment_url("http://www.google.com/#test"); | 492 GURL fragment_url("http://www.google.com/#test"); |
498 | 493 |
499 DummyPrerenderContents* prerender_contents = | 494 DummyPrerenderContents* prerender_contents = |
500 prerender_manager()->CreateNextPrerenderContents(fragment_url, | 495 prerender_manager()->CreateNextPrerenderContents(fragment_url, |
501 FINAL_STATUS_USED); | 496 FINAL_STATUS_USED); |
502 EXPECT_TRUE(prerender_manager()->AddSimplePreload(fragment_url)); | 497 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(fragment_url)); |
503 EXPECT_TRUE(prerender_contents->has_started()); | 498 EXPECT_TRUE(prerender_contents->has_started()); |
504 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); | 499 ASSERT_EQ(prerender_contents, prerender_manager()->GetEntry(url)); |
505 } | 500 } |
506 | 501 |
507 // Tests that the prerender manager ignores fragment references when matching | 502 // Tests that the prerender manager ignores fragment references when matching |
508 // prerender URLs in the case the fragment is in both URLs. | 503 // prerender URLs in the case the fragment is in both URLs. |
509 TEST_F(PrerenderManagerTest, FragmentMatchesFragmentTest) { | 504 TEST_F(PrerenderManagerTest, FragmentMatchesFragmentTest) { |
510 GURL fragment_url("http://www.google.com/#test"); | 505 GURL fragment_url("http://www.google.com/#test"); |
511 GURL other_fragment_url("http://www.google.com/#other_test"); | 506 GURL other_fragment_url("http://www.google.com/#other_test"); |
512 | 507 |
513 DummyPrerenderContents* prerender_contents = | 508 DummyPrerenderContents* prerender_contents = |
514 prerender_manager()->CreateNextPrerenderContents(fragment_url, | 509 prerender_manager()->CreateNextPrerenderContents(fragment_url, |
515 FINAL_STATUS_USED); | 510 FINAL_STATUS_USED); |
516 EXPECT_TRUE(prerender_manager()->AddSimplePreload(fragment_url)); | 511 EXPECT_TRUE(prerender_manager()->AddPrerenderWithNoTag(fragment_url)); |
517 EXPECT_TRUE(prerender_contents->has_started()); | 512 EXPECT_TRUE(prerender_contents->has_started()); |
518 ASSERT_EQ(prerender_contents, | 513 ASSERT_EQ(prerender_contents, |
519 prerender_manager()->GetEntry(other_fragment_url)); | 514 prerender_manager()->GetEntry(other_fragment_url)); |
520 } | 515 } |
521 | 516 |
522 } // namespace prerender | 517 } // namespace prerender |
OLD | NEW |