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 <deque> | 5 #include <deque> |
6 #include <vector> | 6 #include <vector> |
7 | 7 |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/path_service.h" | 9 #include "base/path_service.h" |
10 #include "base/prefs/pref_service.h" | 10 #include "base/prefs/pref_service.h" |
(...skipping 428 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
439 PrerenderManager* prerender_manager, | 439 PrerenderManager* prerender_manager, |
440 Profile* profile, | 440 Profile* profile, |
441 const GURL& url, | 441 const GURL& url, |
442 const content::Referrer& referrer, | 442 const content::Referrer& referrer, |
443 Origin origin, | 443 Origin origin, |
444 uint8 experiment_id) OVERRIDE { | 444 uint8 experiment_id) OVERRIDE { |
445 FinalStatus expected_final_status = FINAL_STATUS_MAX; | 445 FinalStatus expected_final_status = FINAL_STATUS_MAX; |
446 if (!expected_final_status_queue_.empty()) { | 446 if (!expected_final_status_queue_.empty()) { |
447 expected_final_status = expected_final_status_queue_.front(); | 447 expected_final_status = expected_final_status_queue_.front(); |
448 expected_final_status_queue_.pop_front(); | 448 expected_final_status_queue_.pop_front(); |
| 449 } else { |
| 450 // There shouldn't be any unexpected prerenders. |
| 451 ADD_FAILURE() << "Unexpected prerender attempt"; |
449 } | 452 } |
450 VLOG(1) << "Creating prerender contents for " << url.path() << | 453 VLOG(1) << "Creating prerender contents for " << url.path() << |
451 " with expected final status " << expected_final_status; | 454 " with expected final status " << expected_final_status; |
452 VLOG(1) << expected_final_status_queue_.size() << " left in the queue."; | 455 VLOG(1) << expected_final_status_queue_.size() << " left in the queue."; |
453 return new TestPrerenderContents(prerender_manager, | 456 return new TestPrerenderContents(prerender_manager, |
454 profile, url, referrer, origin, | 457 profile, url, referrer, origin, |
455 expected_number_of_loads_, | 458 expected_number_of_loads_, |
456 expected_final_status, | 459 expected_final_status, |
457 prerender_should_wait_for_ready_title_); | 460 prerender_should_wait_for_ready_title_); |
458 } | 461 } |
(...skipping 1995 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2454 | 2457 |
2455 MessageLoop::current()->PostTask( | 2458 MessageLoop::current()->PostTask( |
2456 FROM_HERE, base::Bind(&CancelAllPrerenders, GetPrerenderManager())); | 2459 FROM_HERE, base::Bind(&CancelAllPrerenders, GetPrerenderManager())); |
2457 content::RunMessageLoop(); | 2460 content::RunMessageLoop(); |
2458 | 2461 |
2459 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0)); | 2462 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0)); |
2460 EXPECT_TRUE(DidReceivePrerenderStopEventForLinkNumber(0)); | 2463 EXPECT_TRUE(DidReceivePrerenderStopEventForLinkNumber(0)); |
2461 EXPECT_FALSE(HadPrerenderEventErrors()); | 2464 EXPECT_FALSE(HadPrerenderEventErrors()); |
2462 } | 2465 } |
2463 | 2466 |
| 2467 // Cancels the prerender of a page with its own prerender. The second prerender |
| 2468 // should never be started. |
| 2469 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, |
| 2470 PrerenderCancelPrerenderWithPrerender) { |
| 2471 PrerenderTestURL("files/prerender/prerender_infinite_a.html", |
| 2472 FINAL_STATUS_CANCELLED, |
| 2473 1); |
| 2474 // Post a task to cancel all the prerenders. |
| 2475 MessageLoop::current()->PostTask( |
| 2476 FROM_HERE, base::Bind(&CancelAllPrerenders, GetPrerenderManager())); |
| 2477 content::RunMessageLoop(); |
| 2478 EXPECT_TRUE(GetPrerenderContents() == NULL); |
| 2479 } |
| 2480 |
2464 // PrerenderBrowserTest.PrerenderEventsNoLoad may pass flakily on regression, | 2481 // PrerenderBrowserTest.PrerenderEventsNoLoad may pass flakily on regression, |
2465 // so please be aggressive about filing bugs when this test is failing. | 2482 // so please be aggressive about filing bugs when this test is failing. |
2466 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderEventsNoLoad) { | 2483 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderEventsNoLoad) { |
2467 // This should be canceled. | 2484 // This should be canceled. |
2468 PrerenderTestURL("files/prerender/prerender_http_auth_container.html", | 2485 PrerenderTestURL("files/prerender/prerender_http_auth_container.html", |
2469 FINAL_STATUS_AUTH_NEEDED, | 2486 FINAL_STATUS_AUTH_NEEDED, |
2470 1); | 2487 1); |
2471 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0)); | 2488 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0)); |
2472 EXPECT_FALSE(DidReceivePrerenderLoadEventForLinkNumber(0)); | 2489 EXPECT_FALSE(DidReceivePrerenderLoadEventForLinkNumber(0)); |
2473 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0)); | 2490 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0)); |
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2725 channel_close_watcher.WatchChannel(browser()->tab_strip_model()-> | 2742 channel_close_watcher.WatchChannel(browser()->tab_strip_model()-> |
2726 GetActiveWebContents()->GetRenderProcessHost()); | 2743 GetActiveWebContents()->GetRenderProcessHost()); |
2727 NavigateToDestURL(); | 2744 NavigateToDestURL(); |
2728 channel_close_watcher.WaitForChannelClose(); | 2745 channel_close_watcher.WaitForChannelClose(); |
2729 | 2746 |
2730 ASSERT_TRUE(IsEmptyPrerenderLinkManager()); | 2747 ASSERT_TRUE(IsEmptyPrerenderLinkManager()); |
2731 ASSERT_TRUE(catcher.GetNextResult()) << catcher.message(); | 2748 ASSERT_TRUE(catcher.GetNextResult()) << catcher.message(); |
2732 } | 2749 } |
2733 | 2750 |
2734 } // namespace prerender | 2751 } // namespace prerender |
OLD | NEW |