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

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

Issue 2508143002: Prerender: add true simultaneous nostate prefetch test. (Closed)
Patch Set: comments Created 4 years, 1 month 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 | « chrome/browser/prerender/prerender_browsertest.cc ('k') | chrome/browser/prerender/prerender_test_utils.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/prerender/prerender_nostate_prefetch_browsertest.cc
diff --git a/chrome/browser/prerender/prerender_nostate_prefetch_browsertest.cc b/chrome/browser/prerender/prerender_nostate_prefetch_browsertest.cc
index 87ba6bb8c14583ca09157c6b5bf1fefbb0c0971c..eff9f43716dfde3610922d3b95088249236115bd 100644
--- a/chrome/browser/prerender/prerender_nostate_prefetch_browsertest.cc
+++ b/chrome/browser/prerender/prerender_nostate_prefetch_browsertest.cc
@@ -200,10 +200,9 @@ IN_PROC_BROWSER_TEST_F(NoStatePrefetchBrowserTest, MetaTagCSP) {
first_script.WaitForCount(0);
}
-// Checks that the second prefetch request succeeds. TODO(pasko): This test
-// waits for Prerender Stop before starting the second request, add a test that
-// starts the second request from the UI thread immediately without waiting.
-IN_PROC_BROWSER_TEST_F(NoStatePrefetchBrowserTest, PrefetchSimultaneous) {
+// Checks that the second prefetch request succeeds. This test waits for
+// Prerender Stop before starting the second request.
+IN_PROC_BROWSER_TEST_F(NoStatePrefetchBrowserTest, PrefetchMultipleRequest) {
RequestCounter first_main_counter;
CountRequestFor(kPrefetchPage, &first_main_counter);
RequestCounter second_main_counter;
@@ -213,9 +212,6 @@ IN_PROC_BROWSER_TEST_F(NoStatePrefetchBrowserTest, PrefetchSimultaneous) {
RequestCounter second_script_counter;
CountRequestFor(kPrefetchScript2, &second_script_counter);
- // The first prerender is marked as canceled. When the second prerender
- // starts, it sees that the first has been abandoned (because the earlier
- // prerender is detached immediately and so dies quickly).
PrefetchFromFile(kPrefetchPage, FINAL_STATUS_NOSTATE_PREFETCH_FINISHED);
PrefetchFromFile(kPrefetchPage2, FINAL_STATUS_NOSTATE_PREFETCH_FINISHED);
first_main_counter.WaitForCount(1);
@@ -224,6 +220,36 @@ IN_PROC_BROWSER_TEST_F(NoStatePrefetchBrowserTest, PrefetchSimultaneous) {
second_script_counter.WaitForCount(1);
}
+// Checks that a second prefetch request, started before the first stops,
+// succeeds.
+IN_PROC_BROWSER_TEST_F(NoStatePrefetchBrowserTest, PrefetchSimultaneous) {
+ RequestCounter second_main_counter;
+ CountRequestFor(kPrefetchPage2, &second_main_counter);
+ RequestCounter second_script_counter;
+ CountRequestFor(kPrefetchScript2, &second_script_counter);
+
+ GURL first_url = src_server()->GetURL(MakeAbsolute(kPrefetchPage));
+ base::FilePath first_path = ui_test_utils::GetTestFilePath(
+ base::FilePath(), base::FilePath().AppendASCII(kPrefetchPage));
+
+ content::BrowserThread::PostTask(
+ content::BrowserThread::IO, FROM_HERE,
+ base::Bind(&test_utils::CreateHangingFirstRequestInterceptorOnIO,
+ first_url, first_path, base::Closure()));
+
+ // Start the first prefetch directly instead of via PrefetchFromFile for the
+ // first prefetch to avoid the wait on prerender stop.
+ GURL first_loader_url = ServeLoaderURL(
+ kPrefetchLoaderPath, "REPLACE_WITH_PREFETCH_URL", first_url, "");
+ std::vector<FinalStatus> first_expected_status_queue(1,
+ FINAL_STATUS_CANCELLED);
+ NavigateWithPrerenders(first_loader_url, first_expected_status_queue);
+
+ PrefetchFromFile(kPrefetchPage2, FINAL_STATUS_NOSTATE_PREFETCH_FINISHED);
+ second_main_counter.WaitForCount(1);
+ second_script_counter.WaitForCount(1);
+}
+
// Checks a prefetch to a nonexisting page.
IN_PROC_BROWSER_TEST_F(NoStatePrefetchBrowserTest, PrefetchNonexisting) {
std::unique_ptr<TestPrerender> test_prerender = PrefetchFromFile(
« no previous file with comments | « chrome/browser/prerender/prerender_browsertest.cc ('k') | chrome/browser/prerender/prerender_test_utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698