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

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

Issue 170173003: Revert of Re-enable prerender RemovingLink browser tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 10 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/test/data/prerender/prerender_events_common.js » ('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 1261 matching lines...) Expand 10 before | Expand all | Expand 10 after
1272 return prerender_manager; 1272 return prerender_manager;
1273 } 1273 }
1274 1274
1275 const PrerenderLinkManager* GetPrerenderLinkManager() const { 1275 const PrerenderLinkManager* GetPrerenderLinkManager() const {
1276 PrerenderLinkManager* prerender_link_manager = 1276 PrerenderLinkManager* prerender_link_manager =
1277 PrerenderLinkManagerFactory::GetForProfile( 1277 PrerenderLinkManagerFactory::GetForProfile(
1278 current_browser()->profile()); 1278 current_browser()->profile());
1279 return prerender_link_manager; 1279 return prerender_link_manager;
1280 } 1280 }
1281 1281
1282 int GetPrerenderEventCount(int index, const std::string& type) const { 1282 bool DidReceivePrerenderStartEventForLinkNumber(int index) const {
1283 int event_count; 1283 bool received_prerender_started;
1284 std::string expression = base::StringPrintf( 1284 std::string expression = base::StringPrintf(
1285 "window.domAutomationController.send(" 1285 "window.domAutomationController.send(Boolean("
1286 " GetPrerenderEventCount(%d, '%s'))", index, type.c_str()); 1286 "receivedPrerenderStartEvents[%d]))", index);
1287 1287
1288 CHECK(content::ExecuteScriptAndExtractInt( 1288 CHECK(content::ExecuteScriptAndExtractBool(
1289 GetActiveWebContents(), expression, &event_count)); 1289 GetActiveWebContents(),
1290 return event_count; 1290 expression,
1291 } 1291 &received_prerender_started));
1292 1292 return received_prerender_started;
1293 bool DidReceivePrerenderStartEventForLinkNumber(int index) const {
1294 return GetPrerenderEventCount(index, "webkitprerenderstart") > 0;
1295 } 1293 }
1296 1294
1297 int GetPrerenderLoadEventCountForLinkNumber(int index) const { 1295 int GetPrerenderLoadEventCountForLinkNumber(int index) const {
1298 return GetPrerenderEventCount(index, "webkitprerenderload"); 1296 int load_event_count;
1297 std::string expression = base::StringPrintf(
1298 "window.domAutomationController.send("
1299 "receivedPrerenderLoadEvents[%d] || 0)", index);
1300
1301 CHECK(content::ExecuteScriptAndExtractInt(
1302 GetActiveWebContents(),
1303 expression,
1304 &load_event_count));
1305 return load_event_count;
1299 } 1306 }
1300 1307
1301 int GetPrerenderDomContentLoadedEventCountForLinkNumber(int index) const { 1308 int GetPrerenderDomContentLoadedEventCountForLinkNumber(int index) const {
1302 return GetPrerenderEventCount(index, "webkitprerenderdomcontentloaded"); 1309 int dom_content_loaded_event_count;
1310 std::string expression = base::StringPrintf(
1311 "window.domAutomationController.send("
1312 "receivedPrerenderDomContentLoadedEvents[%d] || 0)", index);
1313
1314 CHECK(content::ExecuteScriptAndExtractInt(
1315 GetActiveWebContents(),
1316 expression,
1317 &dom_content_loaded_event_count));
1318 return dom_content_loaded_event_count;
1303 } 1319 }
1304 1320
1305 bool DidReceivePrerenderStopEventForLinkNumber(int index) const { 1321 bool DidReceivePrerenderStopEventForLinkNumber(int index) const {
1306 return GetPrerenderEventCount(index, "webkitprerenderstop") > 0; 1322 bool received_prerender_stopped;
1307 } 1323 std::string expression = base::StringPrintf(
1324 "window.domAutomationController.send(Boolean("
1325 "receivedPrerenderStopEvents[%d]))", index);
1308 1326
1309 void WaitForPrerenderEventCount(int index, 1327 CHECK(content::ExecuteScriptAndExtractBool(
1310 const std::string& type, 1328 GetActiveWebContents(),
1311 int count) const { 1329 expression,
1312 int dummy; 1330 &received_prerender_stopped));
1313 std::string expression = base::StringPrintf( 1331 return received_prerender_stopped;
1314 "WaitForPrerenderEventCount(%d, '%s', %d,"
1315 " window.domAutomationController.send.bind("
1316 " window.domAutomationController, 0))",
1317 index, type.c_str(), count);
1318
1319 CHECK(content::ExecuteScriptAndExtractInt(
1320 GetActiveWebContents(), expression, &dummy));
1321 CHECK_EQ(0, dummy);
1322 } 1332 }
1323 1333
1324 bool HadPrerenderEventErrors() const { 1334 bool HadPrerenderEventErrors() const {
1325 bool had_prerender_event_errors; 1335 bool had_prerender_event_errors;
1326 CHECK(content::ExecuteScriptAndExtractBool( 1336 CHECK(content::ExecuteScriptAndExtractBool(
1327 GetActiveWebContents(), 1337 GetActiveWebContents(),
1328 "window.domAutomationController.send(Boolean(" 1338 "window.domAutomationController.send(Boolean("
1329 " hadPrerenderEventErrors))", 1339 " hadPrerenderEventErrors))",
1330 &had_prerender_event_errors)); 1340 &had_prerender_event_errors));
1331 return had_prerender_event_errors; 1341 return had_prerender_event_errors;
(...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after
1706 1716
1707 EXPECT_FALSE(DidReceivePrerenderStartEventForLinkNumber(1)); 1717 EXPECT_FALSE(DidReceivePrerenderStartEventForLinkNumber(1));
1708 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1)); 1718 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1));
1709 EXPECT_FALSE(HadPrerenderEventErrors()); 1719 EXPECT_FALSE(HadPrerenderEventErrors());
1710 // IsEmptyPrerenderLinkManager() is not racy because the earlier DidReceive* 1720 // IsEmptyPrerenderLinkManager() is not racy because the earlier DidReceive*
1711 // calls did a thread/process hop to the renderer which insured pending 1721 // calls did a thread/process hop to the renderer which insured pending
1712 // renderer events have arrived. 1722 // renderer events have arrived.
1713 ASSERT_TRUE(IsEmptyPrerenderLinkManager()); 1723 ASSERT_TRUE(IsEmptyPrerenderLinkManager());
1714 } 1724 }
1715 1725
1716 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPageRemovingLink) { 1726 // Flaky, http://crbug.com/167340.
1717 scoped_ptr<TestPrerender> prerender = 1727 IN_PROC_BROWSER_TEST_F(
1718 PrerenderTestURL("files/prerender/prerender_page.html", 1728 PrerenderBrowserTest, DISABLED_PrerenderPageRemovingLink) {
1719 FINAL_STATUS_CANCELLED, 1); 1729 set_loader_path("files/prerender/prerender_loader_removing_links.html");
1730 set_loader_query_and_fragment("?links_to_insert=1");
1731 PrerenderTestURL("files/prerender/prerender_page.html",
1732 FINAL_STATUS_CANCELLED, 1);
1720 1733
1721 // No ChannelDestructionWatcher is needed here, since prerenders in the 1734 // No ChannelDestructionWatcher is needed here, since prerenders in the
1722 // PrerenderLinkManager should be deleted by removing the links, rather than 1735 // PrerenderLinkManager should be deleted by removing the links, rather than
1723 // shutting down the renderer process. 1736 // shutting down the renderer process.
1724 RemoveLinkElement(0); 1737 RemoveLinkElement(0);
1725 prerender->WaitForStop();
1726
1727 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0)); 1738 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0));
1728 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0)); 1739 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0));
1729 EXPECT_FALSE(HadPrerenderEventErrors()); 1740 EXPECT_FALSE(HadPrerenderEventErrors());
1730 // IsEmptyPrerenderLinkManager() is not racy because the earlier DidReceive* 1741 // IsEmptyPrerenderLinkManager() is not racy because the earlier DidReceive*
1731 // calls did a thread/process hop to the renderer which insured pending 1742 // calls did a thread/process hop to the renderer which insured pending
1732 // renderer events have arrived. 1743 // renderer events have arrived.
1733 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 1744 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
1734 } 1745 }
1735 1746
1747 // Flaky, http://crbug.com/167340.
1736 IN_PROC_BROWSER_TEST_F( 1748 IN_PROC_BROWSER_TEST_F(
1737 PrerenderBrowserTest, PrerenderPageRemovingLinkWithTwoLinks) { 1749 PrerenderBrowserTest, DISABLED_PrerenderPageRemovingLinkWithTwoLinks) {
1738 GetPrerenderManager()->mutable_config().max_link_concurrency = 2; 1750 GetPrerenderManager()->mutable_config().max_link_concurrency = 2;
1739 GetPrerenderManager()->mutable_config().max_link_concurrency_per_launcher = 2; 1751 GetPrerenderManager()->mutable_config().max_link_concurrency_per_launcher = 2;
1740 1752
1753 set_loader_path("files/prerender/prerender_loader_removing_links.html");
1741 set_loader_query_and_fragment("?links_to_insert=2"); 1754 set_loader_query_and_fragment("?links_to_insert=2");
1742 scoped_ptr<TestPrerender> prerender = 1755 PrerenderTestURL("files/prerender/prerender_page.html",
1743 PrerenderTestURL("files/prerender/prerender_page.html", 1756 FINAL_STATUS_CANCELLED, 1);
1744 FINAL_STATUS_CANCELLED, 1);
1745 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0)); 1757 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0));
1746 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0)); 1758 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0));
1747 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(1)); 1759 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(1));
1748 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1)); 1760 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1));
1749 1761
1750 RemoveLinkElement(0); 1762 RemoveLinkElement(0);
1751 RemoveLinkElement(1); 1763 RemoveLinkElement(1);
1752 prerender->WaitForStop();
1753
1754 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0)); 1764 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0));
1755 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0)); 1765 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0));
1756 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(1)); 1766 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(1));
1757 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1)); 1767 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1));
1758 EXPECT_FALSE(HadPrerenderEventErrors()); 1768 EXPECT_FALSE(HadPrerenderEventErrors());
1759 // IsEmptyPrerenderLinkManager() is not racy because the earlier DidReceive* 1769 // IsEmptyPrerenderLinkManager() is not racy because the earlier DidReceive*
1760 // calls did a thread/process hop to the renderer which insured pending 1770 // calls did a thread/process hop to the renderer which insured pending
1761 // renderer events have arrived. 1771 // renderer events have arrived.
1762 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); 1772 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
1763 } 1773 }
1764 1774
1775 #if defined(OS_WIN)
1776 // TODO(gavinp): Fails on XP Rel - http://crbug.com/128841
1777 #define MAYBE_PrerenderPageRemovingLinkWithTwoLinksRemovingOne \
1778 DISABLED_PrerenderPageRemovingLinkWithTwoLinksRemovingOne
1779 #else
1780 #define MAYBE_PrerenderPageRemovingLinkWithTwoLinksRemovingOne \
1781 PrerenderPageRemovingLinkWithTwoLinksRemovingOne
1782 #endif // defined(OS_WIN)
1765 IN_PROC_BROWSER_TEST_F( 1783 IN_PROC_BROWSER_TEST_F(
1766 PrerenderBrowserTest, PrerenderPageRemovingLinkWithTwoLinksOneLate) { 1784 PrerenderBrowserTest,
1785 MAYBE_PrerenderPageRemovingLinkWithTwoLinksRemovingOne) {
1767 GetPrerenderManager()->mutable_config().max_link_concurrency = 2; 1786 GetPrerenderManager()->mutable_config().max_link_concurrency = 2;
1768 GetPrerenderManager()->mutable_config().max_link_concurrency_per_launcher = 2; 1787 GetPrerenderManager()->mutable_config().max_link_concurrency_per_launcher = 2;
1769 1788 set_loader_path("files/prerender/prerender_loader_removing_links.html");
1770 GURL url = test_server()->GetURL("files/prerender/prerender_page.html");
1771 scoped_ptr<TestPrerender> prerender =
1772 PrerenderTestURL(url, FINAL_STATUS_CANCELLED, 1);
1773
1774 // Add a second prerender for the same link. It reuses the prerender, so only
1775 // the start event fires here.
1776 AddPrerender(url, 1);
1777 WaitForPrerenderEventCount(1, "webkitprerenderstart", 1);
1778 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(1));
1779 EXPECT_EQ(0, GetPrerenderLoadEventCountForLinkNumber(1));
1780 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1));
1781
1782 RemoveLinkElement(0);
1783 RemoveLinkElement(1);
1784 prerender->WaitForStop();
1785
1786 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0));
1787 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0));
1788 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(1));
1789 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1));
1790 EXPECT_FALSE(HadPrerenderEventErrors());
1791 // IsEmptyPrerenderLinkManager() is not racy because the earlier DidReceive*
1792 // calls did a thread/process hop to the renderer which insured pending
1793 // renderer events have arrived.
1794 EXPECT_TRUE(IsEmptyPrerenderLinkManager());
1795 }
1796
1797 IN_PROC_BROWSER_TEST_F(
1798 PrerenderBrowserTest,
1799 PrerenderPageRemovingLinkWithTwoLinksRemovingOne) {
1800 GetPrerenderManager()->mutable_config().max_link_concurrency = 2;
1801 GetPrerenderManager()->mutable_config().max_link_concurrency_per_launcher = 2;
1802 set_loader_query_and_fragment("?links_to_insert=2"); 1789 set_loader_query_and_fragment("?links_to_insert=2");
1803 PrerenderTestURL("files/prerender/prerender_page.html", 1790 PrerenderTestURL("files/prerender/prerender_page.html",
1804 FINAL_STATUS_USED, 1); 1791 FINAL_STATUS_USED, 1);
1805 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0)); 1792 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0));
1806 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0)); 1793 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(0));
1807 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(1)); 1794 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(1));
1808 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1)); 1795 EXPECT_FALSE(DidReceivePrerenderStopEventForLinkNumber(1));
1809 1796
1810 RemoveLinkElement(0); 1797 RemoveLinkElement(0);
1811 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0)); 1798 EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0));
(...skipping 2247 matching lines...) Expand 10 before | Expand all | Expand 10 after
4059 } 4046 }
4060 }; 4047 };
4061 4048
4062 // Checks that prerendering works in incognito mode. 4049 // Checks that prerendering works in incognito mode.
4063 IN_PROC_BROWSER_TEST_F(PrerenderIncognitoBrowserTest, PrerenderIncognito) { 4050 IN_PROC_BROWSER_TEST_F(PrerenderIncognitoBrowserTest, PrerenderIncognito) {
4064 PrerenderTestURL("files/prerender/prerender_page.html", FINAL_STATUS_USED, 1); 4051 PrerenderTestURL("files/prerender/prerender_page.html", FINAL_STATUS_USED, 1);
4065 NavigateToDestURL(); 4052 NavigateToDestURL();
4066 } 4053 }
4067 4054
4068 } // namespace prerender 4055 } // namespace prerender
OLDNEW
« no previous file with comments | « no previous file | chrome/test/data/prerender/prerender_events_common.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698