| Index: chrome/browser/prerender/prerender_browsertest.cc
|
| diff --git a/chrome/browser/prerender/prerender_browsertest.cc b/chrome/browser/prerender/prerender_browsertest.cc
|
| index f33bd843981afda07759a13310e3b523e9a8f71c..04e01c5923ac119270f56a78d45b6a79a3fe439f 100644
|
| --- a/chrome/browser/prerender/prerender_browsertest.cc
|
| +++ b/chrome/browser/prerender/prerender_browsertest.cc
|
| @@ -1071,9 +1071,21 @@ class PrerenderBrowserTest : virtual public InProcessBrowserTest {
|
| const std::string& html_file,
|
| FinalStatus expected_final_status,
|
| int expected_number_of_loads) {
|
| + return PrerenderTestURL(html_file,
|
| + expected_final_status,
|
| + expected_number_of_loads,
|
| + expected_number_of_loads);
|
| + }
|
| +
|
| + scoped_ptr<TestPrerender> PrerenderTestURL(
|
| + const std::string& html_file,
|
| + FinalStatus expected_final_status,
|
| + int expected_number_of_dom_content_loads,
|
| + int expected_number_of_loads) {
|
| GURL url = test_server()->GetURL(html_file);
|
| return PrerenderTestURL(url,
|
| expected_final_status,
|
| + expected_number_of_dom_content_loads,
|
| expected_number_of_loads);
|
| }
|
|
|
| @@ -1084,6 +1096,7 @@ class PrerenderBrowserTest : virtual public InProcessBrowserTest {
|
| GURL url = test_server()->GetURL(html_file);
|
| return PrerenderTestURLImpl(url,
|
| expected_final_status_queue,
|
| + expected_number_of_loads,
|
| expected_number_of_loads);
|
| }
|
|
|
| @@ -1091,11 +1104,23 @@ class PrerenderBrowserTest : virtual public InProcessBrowserTest {
|
| const GURL& url,
|
| FinalStatus expected_final_status,
|
| int expected_number_of_loads) {
|
| + return PrerenderTestURL(url,
|
| + expected_final_status,
|
| + expected_number_of_loads,
|
| + expected_number_of_loads);
|
| + }
|
| +
|
| + scoped_ptr<TestPrerender> PrerenderTestURL(
|
| + const GURL& url,
|
| + FinalStatus expected_final_status,
|
| + int expected_number_of_dom_content_loads,
|
| + int expected_number_of_loads) {
|
| std::vector<FinalStatus> expected_final_status_queue(
|
| 1, expected_final_status);
|
| std::vector<TestPrerender*> prerenders;
|
| PrerenderTestURLImpl(url,
|
| expected_final_status_queue,
|
| + expected_number_of_dom_content_loads,
|
| expected_number_of_loads).release(&prerenders);
|
| CHECK_EQ(1u, prerenders.size());
|
| return scoped_ptr<TestPrerender>(prerenders[0]);
|
| @@ -1309,6 +1334,19 @@ class PrerenderBrowserTest : virtual public InProcessBrowserTest {
|
| return load_event_count;
|
| }
|
|
|
| + int GetPrerenderDomContentLoadedEventCountForLinkNumber(int index) const {
|
| + int dom_content_loaded_event_count;
|
| + std::string expression = base::StringPrintf(
|
| + "window.domAutomationController.send("
|
| + "receivedPrerenderDomContentLoadedEvents[%d] || 0)", index);
|
| +
|
| + CHECK(content::ExecuteScriptAndExtractInt(
|
| + GetActiveWebContents(),
|
| + expression,
|
| + &dom_content_loaded_event_count));
|
| + return dom_content_loaded_event_count;
|
| + }
|
| +
|
| bool DidReceivePrerenderStopEventForLinkNumber(int index) const {
|
| bool received_prerender_stopped;
|
| std::string expression = base::StringPrintf(
|
| @@ -1469,6 +1507,7 @@ class PrerenderBrowserTest : virtual public InProcessBrowserTest {
|
| ScopedVector<TestPrerender> PrerenderTestURLImpl(
|
| const GURL& prerender_url,
|
| const std::vector<FinalStatus>& expected_final_status_queue,
|
| + int expected_number_of_dom_content_loads,
|
| int expected_number_of_loads) {
|
| dest_url_ = prerender_url;
|
|
|
| @@ -1533,6 +1572,11 @@ class PrerenderBrowserTest : virtual public InProcessBrowserTest {
|
| EXPECT_TRUE(DidReceivePrerenderStartEventForLinkNumber(0));
|
| if (check_load_events_) {
|
| EXPECT_EQ(expected_number_of_loads, prerenders[0]->number_of_loads());
|
| + // expected_number_of_dom_content_loads can differ from
|
| + // expected_number_of_loads, when prerender aborts between
|
| + // 'DOMContentLoaded' and 'load'.
|
| + EXPECT_EQ(expected_number_of_dom_content_loads,
|
| + GetPrerenderDomContentLoadedEventCountForLinkNumber(0));
|
| EXPECT_EQ(expected_number_of_loads,
|
| GetPrerenderLoadEventCountForLinkNumber(0));
|
| }
|
| @@ -1961,6 +2005,7 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
|
| IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderHttpAuthentication) {
|
| PrerenderTestURL("files/prerender/prerender_http_auth_container.html",
|
| FINAL_STATUS_AUTH_NEEDED,
|
| + 1,
|
| 0);
|
| }
|
|
|
| @@ -2113,7 +2158,7 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
|
| "files/prerender/prerender_with_iframe.html",
|
| replacement_text,
|
| &replacement_path));
|
| - PrerenderTestURL(replacement_path, FINAL_STATUS_USED, 2);
|
| + PrerenderTestURL(replacement_path, FINAL_STATUS_USED, 1, 2);
|
| EXPECT_FALSE(UrlIsInPrerenderManager(
|
| "files/prerender/prerender_embedded_content.html"));
|
| NavigateToDestURL();
|
| @@ -2178,6 +2223,7 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderServerRedirectInIframe) {
|
| IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderDownloadIframe) {
|
| PrerenderTestURL("files/prerender/prerender_download_iframe.html",
|
| FINAL_STATUS_DOWNLOAD,
|
| + 1,
|
| 0);
|
| }
|
|
|
| @@ -2245,6 +2291,7 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPopup) {
|
| IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderRegisterProtocolHandler) {
|
| PrerenderTestURL("files/prerender/prerender_register_protocol_handler.html",
|
| FINAL_STATUS_REGISTER_PROTOCOL_HANDLER,
|
| + 1,
|
| 0);
|
| }
|
|
|
| @@ -2784,6 +2831,7 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderSSLErrorIframe) {
|
| IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPrint) {
|
| PrerenderTestURL("files/prerender/prerender_print.html",
|
| FINAL_STATUS_WINDOW_PRINT,
|
| + 1,
|
| 0);
|
| }
|
|
|
| @@ -2872,6 +2920,7 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
|
| &replacement_path));
|
| PrerenderTestURL(replacement_path,
|
| FINAL_STATUS_SSL_CLIENT_CERTIFICATE_REQUESTED,
|
| + 1,
|
| 0);
|
| }
|
|
|
| @@ -2900,6 +2949,7 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderSSLClientCertIframe) {
|
| &replacement_path));
|
| PrerenderTestURL(replacement_path,
|
| FINAL_STATUS_SSL_CLIENT_CERTIFICATE_REQUESTED,
|
| + 1,
|
| 0);
|
| }
|
|
|
| @@ -3518,7 +3568,7 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
|
| "files/prerender/prerender_with_image.html",
|
| replacement_text,
|
| &replacement_path));
|
| - PrerenderTestURL(replacement_path, FINAL_STATUS_UNSUPPORTED_SCHEME, 0);
|
| + PrerenderTestURL(replacement_path, FINAL_STATUS_UNSUPPORTED_SCHEME, 1, 0);
|
| }
|
|
|
| // Checks that chrome-extension subresource does not cancel the prerender.
|
|
|