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

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

Issue 15041004: Replace PruneAllButActive with PruneAllButVisible. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Draft for prerender test. Created 7 years, 6 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | chrome/browser/prerender/prerender_manager.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/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 683 matching lines...) Expand 10 before | Expand all | Expand 10 after
694 int expected_number_of_loads) { 694 int expected_number_of_loads) {
695 std::deque<FinalStatus> expected_final_status_queue(1, 695 std::deque<FinalStatus> expected_final_status_queue(1,
696 expected_final_status); 696 expected_final_status);
697 PrerenderTestURLImpl(prerender_url, destination_url, 697 PrerenderTestURLImpl(prerender_url, destination_url,
698 expected_final_status_queue, 698 expected_final_status_queue,
699 expected_number_of_loads, 699 expected_number_of_loads,
700 false); 700 false);
701 } 701 }
702 702
703 void NavigateToDestURL() const { 703 void NavigateToDestURL() const {
704 NavigateToDestURLWithDisposition(CURRENT_TAB); 704 NavigateToDestURLWithDisposition(CURRENT_TAB, true);
705 } 705 }
706 706
707 // Opens the url in a new tab, with no opener. 707 // Opens the url in a new tab, with no opener.
708 void NavigateToDestURLWithDisposition( 708 void NavigateToDestURLWithDisposition(
709 WindowOpenDisposition disposition) const { 709 WindowOpenDisposition disposition,
710 NavigateToURLImpl(dest_url_, disposition); 710 bool expect_swap_to_succeed) const {
711 NavigateToURLImpl(dest_url_, disposition, expect_swap_to_succeed);
711 } 712 }
712 713
713 void OpenDestURLViaClick() const { 714 void OpenDestURLViaClick() const {
714 OpenDestURLWithJSImpl("Click()"); 715 OpenDestURLWithJSImpl("Click()");
715 } 716 }
716 717
717 void OpenDestURLViaClickTarget() const { 718 void OpenDestURLViaClickTarget() const {
718 OpenDestURLWithJSImpl("ClickTarget()"); 719 OpenDestURLWithJSImpl("ClickTarget()");
719 } 720 }
720 721
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
811 bool js_result; 812 bool js_result;
812 ASSERT_TRUE(content::ExecuteScriptAndExtractBool( 813 ASSERT_TRUE(content::ExecuteScriptAndExtractBool(
813 tab, 814 tab,
814 "window.domAutomationController.send(DidBackToOriginalPagePass())", 815 "window.domAutomationController.send(DidBackToOriginalPagePass())",
815 &js_result)); 816 &js_result));
816 EXPECT_TRUE(js_result); 817 EXPECT_TRUE(js_result);
817 } 818 }
818 819
819 void NavigateToURL(const std::string& dest_html_file) const { 820 void NavigateToURL(const std::string& dest_html_file) const {
820 GURL dest_url = test_server()->GetURL(dest_html_file); 821 GURL dest_url = test_server()->GetURL(dest_html_file);
821 NavigateToURLImpl(dest_url, CURRENT_TAB); 822 NavigateToURLImpl(dest_url, CURRENT_TAB, true);
822 } 823 }
823 824
824 bool UrlIsInPrerenderManager(const std::string& html_file) const { 825 bool UrlIsInPrerenderManager(const std::string& html_file) const {
825 return UrlIsInPrerenderManager(test_server()->GetURL(html_file)); 826 return UrlIsInPrerenderManager(test_server()->GetURL(html_file));
826 } 827 }
827 828
828 bool UrlIsInPrerenderManager(const GURL& url) const { 829 bool UrlIsInPrerenderManager(const GURL& url) const {
829 return GetPrerenderManager()->FindPrerenderData( 830 return GetPrerenderManager()->FindPrerenderData(
830 url, GetSessionStorageNamespace()) != NULL; 831 url, GetSessionStorageNamespace()) != NULL;
831 } 832 }
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
1078 // In the failure case, we should have removed |dest_url_| from the 1079 // In the failure case, we should have removed |dest_url_| from the
1079 // prerender_manager. We ignore dummy PrerenderContents (as indicated 1080 // prerender_manager. We ignore dummy PrerenderContents (as indicated
1080 // by not having started), and PrerenderContents that are expected to 1081 // by not having started), and PrerenderContents that are expected to
1081 // be left in the manager until the test finishes. 1082 // be left in the manager until the test finishes.
1082 EXPECT_TRUE(prerender_contents == NULL || 1083 EXPECT_TRUE(prerender_contents == NULL ||
1083 !prerender_contents->prerendering_has_started()); 1084 !prerender_contents->prerendering_has_started());
1084 } 1085 }
1085 } 1086 }
1086 1087
1087 void NavigateToURLImpl(const GURL& dest_url, 1088 void NavigateToURLImpl(const GURL& dest_url,
1088 WindowOpenDisposition disposition) const { 1089 WindowOpenDisposition disposition,
1090 bool expect_swap_to_succeed) const {
1089 ASSERT_NE(static_cast<PrerenderManager*>(NULL), GetPrerenderManager()); 1091 ASSERT_NE(static_cast<PrerenderManager*>(NULL), GetPrerenderManager());
1090 // Make sure in navigating we have a URL to use in the PrerenderManager. 1092 // Make sure in navigating we have a URL to use in the PrerenderManager.
1091 ASSERT_NE(static_cast<PrerenderContents*>(NULL), GetPrerenderContents()); 1093 ASSERT_NE(static_cast<PrerenderContents*>(NULL), GetPrerenderContents());
1092 1094
1093 // If opening the page in a background tab, it won't be shown when swapped 1095 // If opening the page in a background tab, it won't be shown when swapped
1094 // in. 1096 // in.
1095 if (disposition == NEW_BACKGROUND_TAB) 1097 if (disposition == NEW_BACKGROUND_TAB)
1096 GetPrerenderContents()->set_should_be_shown(false); 1098 GetPrerenderContents()->set_should_be_shown(false);
1097 1099
1098 scoped_ptr<content::WindowedNotificationObserver> page_load_observer; 1100 scoped_ptr<content::WindowedNotificationObserver> page_load_observer;
(...skipping 12 matching lines...) Expand all
1111 } 1113 }
1112 } 1114 }
1113 1115
1114 // Navigate to the prerendered URL, but don't run the message loop. Browser 1116 // Navigate to the prerendered URL, but don't run the message loop. Browser
1115 // issued navigations to prerendered pages will synchronously swap in the 1117 // issued navigations to prerendered pages will synchronously swap in the
1116 // prerendered page. 1118 // prerendered page.
1117 ui_test_utils::NavigateToURLWithDisposition( 1119 ui_test_utils::NavigateToURLWithDisposition(
1118 current_browser(), dest_url, disposition, 1120 current_browser(), dest_url, disposition,
1119 ui_test_utils::BROWSER_TEST_NONE); 1121 ui_test_utils::BROWSER_TEST_NONE);
1120 1122
1121 // Make sure the PrerenderContents found earlier was used or removed. 1123 // Make sure the PrerenderContents found earlier was used or removed,
1122 EXPECT_EQ(static_cast<PrerenderContents*>(NULL), GetPrerenderContents()); 1124 // unless we expect the swap in to fail.
1125 EXPECT_EQ(expect_swap_to_succeed, !GetPrerenderContents());
1123 1126
1124 if (call_javascript_ && web_contents) { 1127 if (call_javascript_ && web_contents && expect_swap_to_succeed) {
1125 if (page_load_observer.get()) 1128 if (page_load_observer.get())
1126 page_load_observer->Wait(); 1129 page_load_observer->Wait();
1127 1130
1128 bool display_test_result = false; 1131 bool display_test_result = false;
1129 ASSERT_TRUE(content::ExecuteScriptAndExtractBool( 1132 ASSERT_TRUE(content::ExecuteScriptAndExtractBool(
1130 web_contents, 1133 web_contents,
1131 "window.domAutomationController.send(DidDisplayPass())", 1134 "window.domAutomationController.send(DidDisplayPass())",
1132 &display_test_result)); 1135 &display_test_result));
1133 EXPECT_TRUE(display_test_result); 1136 EXPECT_TRUE(display_test_result);
1134 } 1137 }
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
1358 } 1361 }
1359 1362
1360 // Checks that the visibility API works. 1363 // Checks that the visibility API works.
1361 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderVisibility) { 1364 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderVisibility) {
1362 PrerenderTestURL("files/prerender/prerender_visibility.html", 1365 PrerenderTestURL("files/prerender/prerender_visibility.html",
1363 FINAL_STATUS_USED, 1366 FINAL_STATUS_USED,
1364 1); 1367 1);
1365 NavigateToDestURL(); 1368 NavigateToDestURL();
1366 } 1369 }
1367 1370
1368 // Checks that the visibility API works when the prerender is quickly opened 1371 // Checks that the prerendering of a page is canceled correctly if we try to
1369 // in a new tab before it stops loading. 1372 // swap it in before it commits.
1370 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderVisibilityQuickSwitch) { 1373 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderNoCommitNoSwap) {
1371 PrerenderTestURL("files/prerender/prerender_visibility_quick.html", 1374 // Navigate to a page that triggers a prerender for a URL that never commits.
1372 FINAL_STATUS_USED, 0); 1375 // TODO(creis): Use a mock HTTP job for a URL that never commits.
1373 NavigateToDestURL(); 1376 const GURL no_commit_url = test_server()->GetURL("/slow?5");
Charlie Reis 2013/05/29 22:30:52 This needs to be replaced with a request that does
1377 PrerenderTestURL(no_commit_url,
1378 FINAL_STATUS_CANCELLED,
1379 0);
1380
1381 // Navigate to the URL, but assume the contents won't be swapped in.
1382 NavigateToDestURLWithDisposition(CURRENT_TAB, false);
1383
1384 // Confirm that the prerendered version of the URL is not swapped in,
1385 // since it never committed.
1386 EXPECT_TRUE(UrlIsInPrerenderManager(no_commit_url));
1387
1388 // Post a task to cancel all the prerenders, so that we don't wait further.
1389 base::MessageLoop::current()->PostTask(
1390 FROM_HERE, base::Bind(&CancelAllPrerenders, GetPrerenderManager()));
1391 content::RunMessageLoop();
1374 } 1392 }
1375 1393
1376 // Checks that the prerendering of a page is canceled correctly when a 1394 // Checks that the prerendering of a page is canceled correctly when a
1377 // Javascript alert is called. 1395 // Javascript alert is called.
1378 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderAlertBeforeOnload) { 1396 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderAlertBeforeOnload) {
1379 PrerenderTestURL("files/prerender/prerender_alert_before_onload.html", 1397 PrerenderTestURL("files/prerender/prerender_alert_before_onload.html",
1380 FINAL_STATUS_JAVASCRIPT_ALERT, 1398 FINAL_STATUS_JAVASCRIPT_ALERT,
1381 1); 1399 1);
1382 } 1400 }
1383 1401
(...skipping 1404 matching lines...) Expand 10 before | Expand all | Expand 10 after
2788 // Checks that non-http/https main page redirects cancel the prerender. 2806 // Checks that non-http/https main page redirects cancel the prerender.
2789 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, 2807 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
2790 PrerenderCancelMainFrameRedirectUnsupportedScheme) { 2808 PrerenderCancelMainFrameRedirectUnsupportedScheme) {
2791 GURL url = test_server()->GetURL( 2809 GURL url = test_server()->GetURL(
2792 CreateServerRedirect("invalidscheme://www.google.com/test.html")); 2810 CreateServerRedirect("invalidscheme://www.google.com/test.html"));
2793 PrerenderTestURL(url, FINAL_STATUS_UNSUPPORTED_SCHEME, 1); 2811 PrerenderTestURL(url, FINAL_STATUS_UNSUPPORTED_SCHEME, 1);
2794 NavigateToDestURL(); 2812 NavigateToDestURL();
2795 } 2813 }
2796 2814
2797 } // namespace prerender 2815 } // namespace prerender
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/prerender/prerender_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698