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

Side by Side Diff: chrome/browser/prerender/prerender_browsertest.cc

Issue 550453002: Avoid doing periodic prerender cleanup when there are no contents. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update tests Created 6 years, 3 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 | « no previous file | chrome/browser/prerender/prerender_field_trial.cc » ('j') | 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 <deque> 5 #include <deque>
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/files/file_path.h" 10 #include "base/files/file_path.h"
(...skipping 3339 matching lines...) Expand 10 before | Expand all | Expand 10 after
3350 PrerenderTestURL("files/prerender/prerender_xhr_put.html", 3350 PrerenderTestURL("files/prerender/prerender_xhr_put.html",
3351 FINAL_STATUS_WOULD_HAVE_BEEN_USED, 0); 3351 FINAL_STATUS_WOULD_HAVE_BEEN_USED, 0);
3352 OpenDestURLViaClick(); 3352 OpenDestURLViaClick();
3353 } 3353 }
3354 3354
3355 // Make sure that the MatchComplete dummy works in the normal case. Once 3355 // Make sure that the MatchComplete dummy works in the normal case. Once
3356 // a prerender is cancelled because of a script, a dummy must be created to 3356 // a prerender is cancelled because of a script, a dummy must be created to
3357 // account for the MatchComplete case, and it must have a final status of 3357 // account for the MatchComplete case, and it must have a final status of
3358 // FINAL_STATUS_WOULD_HAVE_BEEN_USED. 3358 // FINAL_STATUS_WOULD_HAVE_BEEN_USED.
3359 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, MatchCompleteDummy) { 3359 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, MatchCompleteDummy) {
3360 RestorePrerenderMode restore_prerender_mode;
3361 PrerenderManager::SetMode(
3362 PrerenderManager::PRERENDER_MODE_EXPERIMENT_MATCH_COMPLETE_GROUP);
3360 3363
3361 std::vector<FinalStatus> expected_final_status_queue; 3364 std::vector<FinalStatus> expected_final_status_queue;
3362 expected_final_status_queue.push_back(FINAL_STATUS_INVALID_HTTP_METHOD); 3365 expected_final_status_queue.push_back(FINAL_STATUS_INVALID_HTTP_METHOD);
3363 expected_final_status_queue.push_back(FINAL_STATUS_WOULD_HAVE_BEEN_USED); 3366 expected_final_status_queue.push_back(FINAL_STATUS_WOULD_HAVE_BEEN_USED);
3364 PrerenderTestURL("files/prerender/prerender_xhr_put.html", 3367 PrerenderTestURL("files/prerender/prerender_xhr_put.html",
3365 expected_final_status_queue, 1); 3368 expected_final_status_queue, 1);
3366 histogram_tester().ExpectTotalCount("Prerender.none_PerceivedPLT", 1); 3369 histogram_tester().ExpectTotalCount("Prerender.none_PerceivedPLT", 1);
3367 histogram_tester().ExpectTotalCount("Prerender.none_PerceivedPLTMatched", 0); 3370 histogram_tester().ExpectTotalCount("Prerender.none_PerceivedPLTMatched", 0);
3368 histogram_tester().ExpectTotalCount( 3371 histogram_tester().ExpectTotalCount(
3369 "Prerender.none_PerceivedPLTMatchedComplete", 0); 3372 "Prerender.none_PerceivedPLTMatchedComplete", 0);
3370 histogram_tester().ExpectTotalCount( 3373 histogram_tester().ExpectTotalCount(
3371 "Prerender.websame_PrerenderNotSwappedInPLT", 1); 3374 "Prerender.websame_PrerenderNotSwappedInPLT", 1);
3372 3375
3373 NavigateToDestURL(); 3376 NavigateToDestURL();
3374 histogram_tester().ExpectTotalCount("Prerender.websame_PerceivedPLT", 1); 3377 histogram_tester().ExpectTotalCount("Prerender.websame_PerceivedPLT", 1);
3375 histogram_tester().ExpectTotalCount("Prerender.websame_PerceivedPLTMatched", 3378 histogram_tester().ExpectTotalCount("Prerender.websame_PerceivedPLTMatched",
3376 0); 3379 0);
3377 histogram_tester().ExpectTotalCount( 3380 histogram_tester().ExpectTotalCount(
3378 "Prerender.websame_PerceivedPLTMatchedComplete", 1); 3381 "Prerender.websame_PerceivedPLTMatchedComplete", 1);
3379 } 3382 }
3380 3383
3381 // Verify that a navigation that hits a MatchComplete dummy while another is in 3384 // Verify that a navigation that hits a MatchComplete dummy while another is in
3382 // progress does not also classify the previous navigation as a MatchComplete. 3385 // progress does not also classify the previous navigation as a MatchComplete.
3383 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, 3386 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
3384 MatchCompleteDummyCancelNavigation) { 3387 MatchCompleteDummyCancelNavigation) {
3388 RestorePrerenderMode restore_prerender_mode;
3389 PrerenderManager::SetMode(
3390 PrerenderManager::PRERENDER_MODE_EXPERIMENT_MATCH_COMPLETE_GROUP);
3391
3385 // Arrange for a URL to hang. 3392 // Arrange for a URL to hang.
3386 const GURL kNoCommitUrl("http://never-respond.example.com"); 3393 const GURL kNoCommitUrl("http://never-respond.example.com");
3387 base::FilePath file(FILE_PATH_LITERAL( 3394 base::FilePath file(FILE_PATH_LITERAL(
3388 "chrome/test/data/prerender/prerender_page.html")); 3395 "chrome/test/data/prerender/prerender_page.html"));
3389 base::RunLoop hang_loop; 3396 base::RunLoop hang_loop;
3390 BrowserThread::PostTask( 3397 BrowserThread::PostTask(
3391 BrowserThread::IO, FROM_HERE, 3398 BrowserThread::IO, FROM_HERE,
3392 base::Bind(&CreateHangingFirstRequestInterceptorOnIO, kNoCommitUrl, 3399 base::Bind(&CreateHangingFirstRequestInterceptorOnIO, kNoCommitUrl,
3393 file, hang_loop.QuitClosure())); 3400 file, hang_loop.QuitClosure()));
3394 3401
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
3580 NavigateToDestURL(); 3587 NavigateToDestURL();
3581 channel_close_watcher.WaitForChannelClose(); 3588 channel_close_watcher.WaitForChannelClose();
3582 3589
3583 ASSERT_TRUE(IsEmptyPrerenderLinkManager()); 3590 ASSERT_TRUE(IsEmptyPrerenderLinkManager());
3584 ASSERT_TRUE(catcher.GetNextResult()) << catcher.message(); 3591 ASSERT_TRUE(catcher.GetNextResult()) << catcher.message();
3585 } 3592 }
3586 3593
3587 // Test that prerenders abort when navigating to a stream. 3594 // Test that prerenders abort when navigating to a stream.
3588 // See chrome/browser/extensions/api/streams_private/streams_private_apitest.cc 3595 // See chrome/browser/extensions/api/streams_private/streams_private_apitest.cc
3589 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTestWithExtensions, StreamsTest) { 3596 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTestWithExtensions, StreamsTest) {
3597 RestorePrerenderMode restore_prerender_mode;
3598 PrerenderManager::SetMode(
3599 PrerenderManager::PRERENDER_MODE_EXPERIMENT_MATCH_COMPLETE_GROUP);
3600
3590 ASSERT_TRUE(StartSpawnedTestServer()); 3601 ASSERT_TRUE(StartSpawnedTestServer());
3591 3602
3592 const extensions::Extension* extension = LoadExtension( 3603 const extensions::Extension* extension = LoadExtension(
3593 test_data_dir_.AppendASCII("streams_private/handle_mime_type")); 3604 test_data_dir_.AppendASCII("streams_private/handle_mime_type"));
3594 ASSERT_TRUE(extension); 3605 ASSERT_TRUE(extension);
3595 EXPECT_EQ(std::string(extension_misc::kStreamsPrivateTestExtensionId), 3606 EXPECT_EQ(std::string(extension_misc::kStreamsPrivateTestExtensionId),
3596 extension->id()); 3607 extension->id());
3597 MimeTypesHandler* handler = MimeTypesHandler::GetHandler(extension); 3608 MimeTypesHandler* handler = MimeTypesHandler::GetHandler(extension);
3598 ASSERT_TRUE(handler); 3609 ASSERT_TRUE(handler);
3599 EXPECT_TRUE(handler->CanHandleMIMEType("application/msword")); 3610 EXPECT_TRUE(handler->CanHandleMIMEType("application/msword"));
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
3780 BrowserThread::IO, FROM_HERE, 3791 BrowserThread::IO, FROM_HERE,
3781 base::Bind(&CreateMockInterceptorOnIO, GURL(webstore_url), file)); 3792 base::Bind(&CreateMockInterceptorOnIO, GURL(webstore_url), file));
3782 3793
3783 PrerenderTestURL(CreateClientRedirect(webstore_url), 3794 PrerenderTestURL(CreateClientRedirect(webstore_url),
3784 FINAL_STATUS_OPEN_URL, 1); 3795 FINAL_STATUS_OPEN_URL, 1);
3785 } 3796 }
3786 3797
3787 // Checks that canceling a MatchComplete dummy doesn't result in two 3798 // Checks that canceling a MatchComplete dummy doesn't result in two
3788 // stop events. 3799 // stop events.
3789 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, CancelMatchCompleteDummy) { 3800 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, CancelMatchCompleteDummy) {
3801 RestorePrerenderMode restore_prerender_mode;
3802 PrerenderManager::SetMode(
3803 PrerenderManager::PRERENDER_MODE_EXPERIMENT_MATCH_COMPLETE_GROUP);
3804
3790 std::vector<FinalStatus> expected_final_status_queue; 3805 std::vector<FinalStatus> expected_final_status_queue;
3791 expected_final_status_queue.push_back(FINAL_STATUS_JAVASCRIPT_ALERT); 3806 expected_final_status_queue.push_back(FINAL_STATUS_JAVASCRIPT_ALERT);
3792 expected_final_status_queue.push_back(FINAL_STATUS_CANCELLED); 3807 expected_final_status_queue.push_back(FINAL_STATUS_CANCELLED);
3793 ScopedVector<TestPrerender> prerenders = 3808 ScopedVector<TestPrerender> prerenders =
3794 PrerenderTestURL("files/prerender/prerender_alert_before_onload.html", 3809 PrerenderTestURL("files/prerender/prerender_alert_before_onload.html",
3795 expected_final_status_queue, 0); 3810 expected_final_status_queue, 0);
3796 3811
3797 // Cancel the MatchComplete dummy. 3812 // Cancel the MatchComplete dummy.
3798 GetPrerenderManager()->CancelAllPrerenders(); 3813 GetPrerenderManager()->CancelAllPrerenders();
3799 prerenders[1]->WaitForStop(); 3814 prerenders[1]->WaitForStop();
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
3894 DisableJavascriptCalls(); 3909 DisableJavascriptCalls();
3895 PrerenderTestURL( 3910 PrerenderTestURL(
3896 CreateServerRedirect("files/prerender/image-deferred.png"), 3911 CreateServerRedirect("files/prerender/image-deferred.png"),
3897 FINAL_STATUS_USED, 1); 3912 FINAL_STATUS_USED, 1);
3898 NavigateToDestURL(); 3913 NavigateToDestURL();
3899 } 3914 }
3900 3915
3901 // Checks that deferred redirects in a synchronous XHR abort the 3916 // Checks that deferred redirects in a synchronous XHR abort the
3902 // prerender. 3917 // prerender.
3903 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderDeferredSynchronousXHR) { 3918 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderDeferredSynchronousXHR) {
3919 RestorePrerenderMode restore_prerender_mode;
3920 PrerenderManager::SetMode(
3921 PrerenderManager::PRERENDER_MODE_EXPERIMENT_MATCH_COMPLETE_GROUP);
3904 PrerenderTestURL("files/prerender/prerender_deferred_sync_xhr.html", 3922 PrerenderTestURL("files/prerender/prerender_deferred_sync_xhr.html",
3905 FINAL_STATUS_BAD_DEFERRED_REDIRECT, 0); 3923 FINAL_STATUS_BAD_DEFERRED_REDIRECT, 0);
3906 NavigateToDestURL(); 3924 NavigateToDestURL();
3907 } 3925 }
3908 3926
3909 // Checks that prerenders are not swapped for navigations with extra headers. 3927 // Checks that prerenders are not swapped for navigations with extra headers.
3910 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderExtraHeadersNoSwap) { 3928 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderExtraHeadersNoSwap) {
3911 PrerenderTestURL("files/prerender/prerender_page.html", 3929 PrerenderTestURL("files/prerender/prerender_page.html",
3912 FINAL_STATUS_APP_TERMINATING, 1); 3930 FINAL_STATUS_APP_TERMINATING, 1);
3913 3931
(...skipping 514 matching lines...) Expand 10 before | Expand all | Expand 10 after
4428 4446
4429 // Navigate to the URL entered. 4447 // Navigate to the URL entered.
4430 omnibox_view->model()->AcceptInput(CURRENT_TAB, false); 4448 omnibox_view->model()->AcceptInput(CURRENT_TAB, false);
4431 4449
4432 // Prerender should be running, but abandoned. 4450 // Prerender should be running, but abandoned.
4433 EXPECT_TRUE( 4451 EXPECT_TRUE(
4434 GetAutocompleteActionPredictor()->IsPrerenderAbandonedForTesting()); 4452 GetAutocompleteActionPredictor()->IsPrerenderAbandonedForTesting());
4435 } 4453 }
4436 4454
4437 } // namespace prerender 4455 } // namespace prerender
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/prerender/prerender_field_trial.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698