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

Unified Diff: chrome/browser/prerender/prerender_browsertest.cc

Issue 133073021: Pass DomContentLoaded event from prerenders to launching elements. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed unit tests. 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/browser/prerender/prerender_contents.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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.
« no previous file with comments | « no previous file | chrome/browser/prerender/prerender_contents.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698