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

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: comments 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
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 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 IN_PROC_BROWSER_TEST_F(NoStatePrefetchBrowserTest, Prefetch301Redirect) { 263 IN_PROC_BROWSER_TEST_F(NoStatePrefetchBrowserTest, Prefetch301Redirect) {
263 RequestCounter script_counter; 264 RequestCounter script_counter;
264 CountRequestFor(kPrefetchScript, &script_counter); 265 CountRequestFor(kPrefetchScript, &script_counter);
265 PrefetchFromFile( 266 PrefetchFromFile(
266 "/server-redirect/?" + 267 "/server-redirect/?" +
267 net::EscapeQueryParamValue(MakeAbsolute(kPrefetchPage), false), 268 net::EscapeQueryParamValue(MakeAbsolute(kPrefetchPage), false),
268 FINAL_STATUS_NOSTATE_PREFETCH_FINISHED); 269 FINAL_STATUS_NOSTATE_PREFETCH_FINISHED);
269 script_counter.WaitForCount(1); 270 script_counter.WaitForCount(1);
270 } 271 }
271 272
273 // Checks that the load flags are set correctly for all resources in a 301
274 // redirect chain.
275 IN_PROC_BROWSER_TEST_F(NoStatePrefetchBrowserTest, Prefetch301LoadFlags) {
276 std::string redirect_path =
277 "/server-redirect/?" +
278 net::EscapeQueryParamValue(MakeAbsolute(kPrefetchPage), false);
279 GURL redirect_url = src_server()->GetURL(redirect_path);
280 GURL page_url = src_server()->GetURL(MakeAbsolute(kPrefetchPage));
281 RequestCounter redirect_counter;
282 content::BrowserThread::PostTask(
283 content::BrowserThread::IO, FROM_HERE,
284 base::Bind(&CreatePrefetchOnlyInterceptorOnIO, redirect_url,
285 redirect_counter.AsWeakPtr()));
pasko 2016/11/23 16:47:29 nit: since we are waiting on the counter anyway,
mattcary 2016/11/24 08:30:22 I did it this way to be consistent with the other
286 RequestCounter page_counter;
287 content::BrowserThread::PostTask(
288 content::BrowserThread::IO, FROM_HERE,
289 base::Bind(&CreatePrefetchOnlyInterceptorOnIO, page_url,
290 page_counter.AsWeakPtr()));
291 PrefetchFromFile(redirect_path, FINAL_STATUS_NOSTATE_PREFETCH_FINISHED);
292 redirect_counter.WaitForCount(1);
293 page_counter.WaitForCount(1);
294 }
295
272 // Checks that a subresource 301 redirect is followed. 296 // Checks that a subresource 301 redirect is followed.
273 IN_PROC_BROWSER_TEST_F(NoStatePrefetchBrowserTest, Prefetch301Subresource) { 297 IN_PROC_BROWSER_TEST_F(NoStatePrefetchBrowserTest, Prefetch301Subresource) {
274 RequestCounter script_counter; 298 RequestCounter script_counter;
275 CountRequestFor(kPrefetchScript, &script_counter); 299 CountRequestFor(kPrefetchScript, &script_counter);
276 PrefetchFromFile(kPrefetchSubresourceRedirectPage, 300 PrefetchFromFile(kPrefetchSubresourceRedirectPage,
277 FINAL_STATUS_NOSTATE_PREFETCH_FINISHED); 301 FINAL_STATUS_NOSTATE_PREFETCH_FINISHED);
278 script_counter.WaitForCount(1); 302 script_counter.WaitForCount(1);
279 } 303 }
280 304
281 // Checks a client redirect is not followed. 305 // Checks a client redirect is not followed.
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
444 468
445 // Check that the URL that was prefetched is not in history. 469 // Check that the URL that was prefetched is not in history.
446 EXPECT_TRUE(std::find(urls.begin(), urls.end(), prefetched_url) == 470 EXPECT_TRUE(std::find(urls.begin(), urls.end(), prefetched_url) ==
447 urls.end()); 471 urls.end());
448 472
449 // The loader URL is the remaining entry. 473 // The loader URL is the remaining entry.
450 EXPECT_EQ(2U, urls.size()); 474 EXPECT_EQ(2U, urls.size());
451 } 475 }
452 476
453 } // namespace prerender 477 } // namespace prerender
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/prerender/prerender_test_utils.h » ('j') | chrome/browser/prerender/prerender_test_utils.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698