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

Side by Side Diff: chrome/browser/prerender/prerender_nostate_prefetch_browsertest.cc

Issue 2529653002: Prerender: Test that prefetch flags are set correctly on redirect. (Closed)
Patch Set: disable tests for plznav Created 4 years 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 unified diff | Download patch
« no previous file with comments | « no previous file | chrome/browser/prerender/prerender_test_utils.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "base/command_line.h" 5 #include "base/command_line.h"
6 #include "base/strings/string16.h" 6 #include "base/strings/string16.h"
7 #include "base/strings/string_split.h" 7 #include "base/strings/string_split.h"
8 #include "base/task_scheduler/post_task.h" 8 #include "base/task_scheduler/post_task.h"
9 #include "chrome/browser/history/history_service_factory.h" 9 #include "chrome/browser/history/history_service_factory.h"
10 #include "chrome/browser/history/history_test_utils.h" 10 #include "chrome/browser/history/history_test_utils.h"
(...skipping 12 matching lines...) Expand all
23 #include "content/public/common/content_switches.h" 23 #include "content/public/common/content_switches.h"
24 #include "content/public/common/url_constants.h" 24 #include "content/public/common/url_constants.h"
25 #include "content/public/test/browser_test_utils.h" 25 #include "content/public/test/browser_test_utils.h"
26 #include "net/base/escape.h" 26 #include "net/base/escape.h"
27 #include "net/dns/mock_host_resolver.h" 27 #include "net/dns/mock_host_resolver.h"
28 #include "net/test/embedded_test_server/request_handler_util.h" 28 #include "net/test/embedded_test_server/request_handler_util.h"
29 #include "testing/gtest/include/gtest/gtest.h" 29 #include "testing/gtest/include/gtest/gtest.h"
30 #include "ui/base/l10n/l10n_util.h" 30 #include "ui/base/l10n/l10n_util.h"
31 31
32 using prerender::test_utils::CreateCountingInterceptorOnIO; 32 using prerender::test_utils::CreateCountingInterceptorOnIO;
33 using prerender::test_utils::CreatePrefetchOnlyInterceptorOnIO;
33 using prerender::test_utils::DestructionWaiter; 34 using prerender::test_utils::DestructionWaiter;
34 using prerender::test_utils::RequestCounter; 35 using prerender::test_utils::RequestCounter;
35 using prerender::test_utils::TestPrerender; 36 using prerender::test_utils::TestPrerender;
36 37
37 namespace prerender { 38 namespace prerender {
38 39
39 // These URLs used for test resources must be relative with the exception of 40 // These URLs used for test resources must be relative with the exception of
40 // |kPrefetchLoaderPath|. 41 // |kPrefetchLoaderPath|.
41 const char kPrefetchImagePage[] = "prerender/prefetch_image.html"; 42 const char kPrefetchImagePage[] = "prerender/prefetch_image.html";
42 const char kPrefetchJpeg[] = "prerender/image.jpeg"; 43 const char kPrefetchJpeg[] = "prerender/image.jpeg";
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
124 std::unique_ptr<TestPrerender> test_prerender = 125 std::unique_ptr<TestPrerender> test_prerender =
125 PrefetchFromFile(kPrefetchPage, FINAL_STATUS_NOSTATE_PREFETCH_FINISHED); 126 PrefetchFromFile(kPrefetchPage, FINAL_STATUS_NOSTATE_PREFETCH_FINISHED);
126 main_counter.WaitForCount(1); 127 main_counter.WaitForCount(1);
127 script_counter.WaitForCount(1); 128 script_counter.WaitForCount(1);
128 script2_counter.WaitForCount(0); 129 script2_counter.WaitForCount(0);
129 130
130 // Verify that the page load did not happen. 131 // Verify that the page load did not happen.
131 test_prerender->WaitForLoads(0); 132 test_prerender->WaitForLoads(0);
132 } 133 }
133 134
135 // Check that the LOAD_PREFETCH flag is set.
136 IN_PROC_BROWSER_TEST_F(NoStatePrefetchBrowserTest, PrefetchLoadFlag) {
137 RequestCounter main_counter;
138 RequestCounter script_counter;
139 content::BrowserThread::PostTask(
140 content::BrowserThread::IO, FROM_HERE,
141 base::Bind(&CreatePrefetchOnlyInterceptorOnIO,
142 src_server()->GetURL(MakeAbsolute(kPrefetchPage)),
143 main_counter.AsWeakPtr()));
144 content::BrowserThread::PostTask(
145 content::BrowserThread::IO, FROM_HERE,
146 base::Bind(&CreatePrefetchOnlyInterceptorOnIO,
147 src_server()->GetURL(MakeAbsolute(kPrefetchScript)),
148 script_counter.AsWeakPtr()));
149
150 std::unique_ptr<TestPrerender> test_prerender =
151 PrefetchFromFile(kPrefetchPage, FINAL_STATUS_NOSTATE_PREFETCH_FINISHED);
152 main_counter.WaitForCount(1);
153 script_counter.WaitForCount(1);
154
155 // Verify that the page load did not happen.
156 test_prerender->WaitForLoads(0);
157 }
158
134 // Checks the prefetch of an img tag. 159 // Checks the prefetch of an img tag.
135 IN_PROC_BROWSER_TEST_F(NoStatePrefetchBrowserTest, PrefetchImage) { 160 IN_PROC_BROWSER_TEST_F(NoStatePrefetchBrowserTest, PrefetchImage) {
136 RequestCounter image_counter; 161 RequestCounter image_counter;
137 CountRequestFor(kPrefetchJpeg, &image_counter); 162 CountRequestFor(kPrefetchJpeg, &image_counter);
138 base::StringPairs replacement_text; 163 base::StringPairs replacement_text;
139 replacement_text.push_back( 164 replacement_text.push_back(
140 std::make_pair("REPLACE_WITH_IMAGE_URL", MakeAbsolute(kPrefetchJpeg))); 165 std::make_pair("REPLACE_WITH_IMAGE_URL", MakeAbsolute(kPrefetchJpeg)));
141 std::string main_page_path; 166 std::string main_page_path;
142 net::test_server::GetFilePathWithReplacements( 167 net::test_server::GetFilePathWithReplacements(
143 kPrefetchImagePage, replacement_text, &main_page_path); 168 kPrefetchImagePage, replacement_text, &main_page_path);
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 IN_PROC_BROWSER_TEST_F(NoStatePrefetchBrowserTest, Prefetch301Redirect) { 287 IN_PROC_BROWSER_TEST_F(NoStatePrefetchBrowserTest, Prefetch301Redirect) {
263 RequestCounter script_counter; 288 RequestCounter script_counter;
264 CountRequestFor(kPrefetchScript, &script_counter); 289 CountRequestFor(kPrefetchScript, &script_counter);
265 PrefetchFromFile( 290 PrefetchFromFile(
266 "/server-redirect/?" + 291 "/server-redirect/?" +
267 net::EscapeQueryParamValue(MakeAbsolute(kPrefetchPage), false), 292 net::EscapeQueryParamValue(MakeAbsolute(kPrefetchPage), false),
268 FINAL_STATUS_NOSTATE_PREFETCH_FINISHED); 293 FINAL_STATUS_NOSTATE_PREFETCH_FINISHED);
269 script_counter.WaitForCount(1); 294 script_counter.WaitForCount(1);
270 } 295 }
271 296
297 // Checks that the load flags are set correctly for all resources in a 301
298 // redirect chain.
299 IN_PROC_BROWSER_TEST_F(NoStatePrefetchBrowserTest, Prefetch301LoadFlags) {
300 std::string redirect_path =
301 "/server-redirect/?" +
302 net::EscapeQueryParamValue(MakeAbsolute(kPrefetchPage), false);
303 GURL redirect_url = src_server()->GetURL(redirect_path);
304 GURL page_url = src_server()->GetURL(MakeAbsolute(kPrefetchPage));
305 RequestCounter redirect_counter;
306 content::BrowserThread::PostTask(
307 content::BrowserThread::IO, FROM_HERE,
308 base::Bind(&CreatePrefetchOnlyInterceptorOnIO, redirect_url,
309 redirect_counter.AsWeakPtr()));
310 RequestCounter page_counter;
311 content::BrowserThread::PostTask(
312 content::BrowserThread::IO, FROM_HERE,
313 base::Bind(&CreatePrefetchOnlyInterceptorOnIO, page_url,
314 page_counter.AsWeakPtr()));
315 PrefetchFromFile(redirect_path, FINAL_STATUS_NOSTATE_PREFETCH_FINISHED);
316 redirect_counter.WaitForCount(1);
317 page_counter.WaitForCount(1);
318 }
319
272 // Checks that a subresource 301 redirect is followed. 320 // Checks that a subresource 301 redirect is followed.
273 IN_PROC_BROWSER_TEST_F(NoStatePrefetchBrowserTest, Prefetch301Subresource) { 321 IN_PROC_BROWSER_TEST_F(NoStatePrefetchBrowserTest, Prefetch301Subresource) {
274 RequestCounter script_counter; 322 RequestCounter script_counter;
275 CountRequestFor(kPrefetchScript, &script_counter); 323 CountRequestFor(kPrefetchScript, &script_counter);
276 PrefetchFromFile(kPrefetchSubresourceRedirectPage, 324 PrefetchFromFile(kPrefetchSubresourceRedirectPage,
277 FINAL_STATUS_NOSTATE_PREFETCH_FINISHED); 325 FINAL_STATUS_NOSTATE_PREFETCH_FINISHED);
278 script_counter.WaitForCount(1); 326 script_counter.WaitForCount(1);
279 } 327 }
280 328
281 // Checks a client redirect is not followed. 329 // Checks a client redirect is not followed.
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
444 492
445 // Check that the URL that was prefetched is not in history. 493 // Check that the URL that was prefetched is not in history.
446 EXPECT_TRUE(std::find(urls.begin(), urls.end(), prefetched_url) == 494 EXPECT_TRUE(std::find(urls.begin(), urls.end(), prefetched_url) ==
447 urls.end()); 495 urls.end());
448 496
449 // The loader URL is the remaining entry. 497 // The loader URL is the remaining entry.
450 EXPECT_EQ(2U, urls.size()); 498 EXPECT_EQ(2U, urls.size());
451 } 499 }
452 500
453 } // namespace prerender 501 } // namespace prerender
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/prerender/prerender_test_utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698