| 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/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 1291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1302 "window.domAutomationController.send(" | 1302 "window.domAutomationController.send(" |
| 1303 "receivedPrerenderLoadEvents[%d] || 0)", index); | 1303 "receivedPrerenderLoadEvents[%d] || 0)", index); |
| 1304 | 1304 |
| 1305 CHECK(content::ExecuteScriptAndExtractInt( | 1305 CHECK(content::ExecuteScriptAndExtractInt( |
| 1306 GetActiveWebContents(), | 1306 GetActiveWebContents(), |
| 1307 expression, | 1307 expression, |
| 1308 &load_event_count)); | 1308 &load_event_count)); |
| 1309 return load_event_count; | 1309 return load_event_count; |
| 1310 } | 1310 } |
| 1311 | 1311 |
| 1312 int GetPrerenderDomContentLoadedEventCountForLinkNumber(int index) const { |
| 1313 int dom_content_loaded_event_count; |
| 1314 std::string expression = base::StringPrintf( |
| 1315 "window.domAutomationController.send(" |
| 1316 "receivedPrerenderDomContentLoadedEvents[%d] || 0)", index); |
| 1317 |
| 1318 CHECK(content::ExecuteScriptAndExtractInt( |
| 1319 GetActiveWebContents(), |
| 1320 expression, |
| 1321 &dom_content_loaded_event_count)); |
| 1322 return dom_content_loaded_event_count; |
| 1323 } |
| 1324 |
| 1312 bool DidReceivePrerenderStopEventForLinkNumber(int index) const { | 1325 bool DidReceivePrerenderStopEventForLinkNumber(int index) const { |
| 1313 bool received_prerender_stopped; | 1326 bool received_prerender_stopped; |
| 1314 std::string expression = base::StringPrintf( | 1327 std::string expression = base::StringPrintf( |
| 1315 "window.domAutomationController.send(Boolean(" | 1328 "window.domAutomationController.send(Boolean(" |
| 1316 "receivedPrerenderStopEvents[%d]))", index); | 1329 "receivedPrerenderStopEvents[%d]))", index); |
| 1317 | 1330 |
| 1318 CHECK(content::ExecuteScriptAndExtractBool( | 1331 CHECK(content::ExecuteScriptAndExtractBool( |
| 1319 GetActiveWebContents(), | 1332 GetActiveWebContents(), |
| 1320 expression, | 1333 expression, |
| 1321 &received_prerender_stopped)); | 1334 &received_prerender_stopped)); |
| (...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1611 Browser* explicitly_set_browser_; | 1624 Browser* explicitly_set_browser_; |
| 1612 }; | 1625 }; |
| 1613 | 1626 |
| 1614 // Checks that a page is correctly prerendered in the case of a | 1627 // Checks that a page is correctly prerendered in the case of a |
| 1615 // <link rel=prerender> tag and then loaded into a tab in response to a | 1628 // <link rel=prerender> tag and then loaded into a tab in response to a |
| 1616 // navigation. | 1629 // navigation. |
| 1617 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPage) { | 1630 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPage) { |
| 1618 UMAHistogramHelper histograms; | 1631 UMAHistogramHelper histograms; |
| 1619 | 1632 |
| 1620 PrerenderTestURL("files/prerender/prerender_page.html", FINAL_STATUS_USED, 1); | 1633 PrerenderTestURL("files/prerender/prerender_page.html", FINAL_STATUS_USED, 1); |
| 1634 EXPECT_EQ(1, GetPrerenderDomContentLoadedEventCountForLinkNumber(0)); |
| 1621 histograms.Fetch(); | 1635 histograms.Fetch(); |
| 1622 histograms.ExpectTotalCount("Prerender.none_PerceivedPLT", 1); | 1636 histograms.ExpectTotalCount("Prerender.none_PerceivedPLT", 1); |
| 1623 histograms.ExpectTotalCount("Prerender.none_PerceivedPLTMatched", 0); | 1637 histograms.ExpectTotalCount("Prerender.none_PerceivedPLTMatched", 0); |
| 1624 histograms.ExpectTotalCount("Prerender.none_PerceivedPLTMatchedComplete", 0); | 1638 histograms.ExpectTotalCount("Prerender.none_PerceivedPLTMatchedComplete", 0); |
| 1625 histograms.ExpectTotalCount("Prerender.websame_PrerenderNotSwappedInPLT", 1); | 1639 histograms.ExpectTotalCount("Prerender.websame_PrerenderNotSwappedInPLT", 1); |
| 1626 | 1640 |
| 1627 ChannelDestructionWatcher channel_close_watcher; | 1641 ChannelDestructionWatcher channel_close_watcher; |
| 1628 channel_close_watcher.WatchChannel( | 1642 channel_close_watcher.WatchChannel( |
| 1629 GetActiveWebContents()->GetRenderProcessHost()); | 1643 GetActiveWebContents()->GetRenderProcessHost()); |
| 1630 NavigateToDestURL(); | 1644 NavigateToDestURL(); |
| (...skipping 2021 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3652 DisableJavascriptCalls(); | 3666 DisableJavascriptCalls(); |
| 3653 UMAHistogramHelper histograms; | 3667 UMAHistogramHelper histograms; |
| 3654 | 3668 |
| 3655 // The prerender will not completely load until after the swap, so wait for a | 3669 // The prerender will not completely load until after the swap, so wait for a |
| 3656 // title change before calling DidPrerenderPass. | 3670 // title change before calling DidPrerenderPass. |
| 3657 scoped_ptr<TestPrerender> prerender = | 3671 scoped_ptr<TestPrerender> prerender = |
| 3658 PrerenderTestURL( | 3672 PrerenderTestURL( |
| 3659 "files/prerender/prerender_deferred_image.html", | 3673 "files/prerender/prerender_deferred_image.html", |
| 3660 FINAL_STATUS_USED, 0); | 3674 FINAL_STATUS_USED, 0); |
| 3661 WaitForASCIITitle(prerender->contents()->prerender_contents(), kReadyTitle); | 3675 WaitForASCIITitle(prerender->contents()->prerender_contents(), kReadyTitle); |
| 3676 EXPECT_EQ(1, GetPrerenderDomContentLoadedEventCountForLinkNumber(0)); |
| 3662 EXPECT_TRUE(DidPrerenderPass(prerender->contents()->prerender_contents())); | 3677 EXPECT_TRUE(DidPrerenderPass(prerender->contents()->prerender_contents())); |
| 3663 EXPECT_EQ(0, prerender->number_of_loads()); | 3678 EXPECT_EQ(0, prerender->number_of_loads()); |
| 3664 histograms.Fetch(); | 3679 histograms.Fetch(); |
| 3665 histograms.ExpectTotalCount("Prerender.none_PerceivedPLT", 1); | 3680 histograms.ExpectTotalCount("Prerender.none_PerceivedPLT", 1); |
| 3666 histograms.ExpectTotalCount("Prerender.none_PerceivedPLTMatched", 0); | 3681 histograms.ExpectTotalCount("Prerender.none_PerceivedPLTMatched", 0); |
| 3667 histograms.ExpectTotalCount("Prerender.none_PerceivedPLTMatchedComplete", 0); | 3682 histograms.ExpectTotalCount("Prerender.none_PerceivedPLTMatchedComplete", 0); |
| 3668 histograms.ExpectTotalCount("Prerender.websame_PrerenderNotSwappedInPLT", 0); | 3683 histograms.ExpectTotalCount("Prerender.websame_PrerenderNotSwappedInPLT", 0); |
| 3669 | 3684 |
| 3670 // Swap. | 3685 // Swap. |
| 3671 NavigationOrSwapObserver swap_observer(current_browser()->tab_strip_model(), | 3686 NavigationOrSwapObserver swap_observer(current_browser()->tab_strip_model(), |
| (...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4047 } | 4062 } |
| 4048 }; | 4063 }; |
| 4049 | 4064 |
| 4050 // Checks that prerendering works in incognito mode. | 4065 // Checks that prerendering works in incognito mode. |
| 4051 IN_PROC_BROWSER_TEST_F(PrerenderIncognitoBrowserTest, PrerenderIncognito) { | 4066 IN_PROC_BROWSER_TEST_F(PrerenderIncognitoBrowserTest, PrerenderIncognito) { |
| 4052 PrerenderTestURL("files/prerender/prerender_page.html", FINAL_STATUS_USED, 1); | 4067 PrerenderTestURL("files/prerender/prerender_page.html", FINAL_STATUS_USED, 1); |
| 4053 NavigateToDestURL(); | 4068 NavigateToDestURL(); |
| 4054 } | 4069 } |
| 4055 | 4070 |
| 4056 } // namespace prerender | 4071 } // namespace prerender |
| OLD | NEW |