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(GetPrerenderDomContentLoadedEventCountForLinkNumber(0), 1); | |
davidben
2014/02/11 20:18:40
Nit: EXPECT_EQ(1, GetPrerenderblah). The first arg
ksimbili
2014/02/11 21:16:58
Done.
| |
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(GetPrerenderDomContentLoadedEventCountForLinkNumber(0), 1); | |
davidben
2014/02/11 20:18:40
Nit: Ditto.
ksimbili
2014/02/11 21:16:58
Done.
| |
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 |