| 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 7b4f765c5408448c917c3efc05a3ec8e0d5baa65..ce47ee5b8f1b54f7ba3af04be519fd35f08f10f7 100644
|
| --- a/chrome/browser/prerender/prerender_nostate_prefetch_browsertest.cc
|
| +++ b/chrome/browser/prerender/prerender_nostate_prefetch_browsertest.cc
|
| @@ -24,13 +24,12 @@
|
| #include "content/public/common/url_constants.h"
|
| #include "content/public/test/browser_test_utils.h"
|
| #include "net/base/escape.h"
|
| +#include "net/base/load_flags.h"
|
| #include "net/dns/mock_host_resolver.h"
|
| #include "net/test/embedded_test_server/request_handler_util.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| #include "ui/base/l10n/l10n_util.h"
|
|
|
| -using prerender::test_utils::CreateCountingInterceptorOnIO;
|
| -using prerender::test_utils::CreatePrefetchOnlyInterceptorOnIO;
|
| using prerender::test_utils::DestructionWaiter;
|
| using prerender::test_utils::RequestCounter;
|
| using prerender::test_utils::TestPrerender;
|
| @@ -83,8 +82,8 @@ class NoStatePrefetchBrowserTest
|
| base::FilePath(), base::FilePath::FromUTF8Unsafe(path_str));
|
| content::BrowserThread::PostTask(
|
| content::BrowserThread::IO, FROM_HERE,
|
| - base::Bind(&CreateCountingInterceptorOnIO, url, url_file,
|
| - counter->AsWeakPtr()));
|
| + base::Bind(&prerender::test_utils::CreateCountingInterceptorOnIO, url,
|
| + url_file, counter->AsWeakPtr()));
|
| }
|
|
|
| protected:
|
| @@ -136,16 +135,16 @@ IN_PROC_BROWSER_TEST_F(NoStatePrefetchBrowserTest, PrefetchSimple) {
|
| IN_PROC_BROWSER_TEST_F(NoStatePrefetchBrowserTest, PrefetchLoadFlag) {
|
| RequestCounter main_counter;
|
| RequestCounter script_counter;
|
| - content::BrowserThread::PostTask(
|
| - content::BrowserThread::IO, FROM_HERE,
|
| - base::Bind(&CreatePrefetchOnlyInterceptorOnIO,
|
| - src_server()->GetURL(MakeAbsolute(kPrefetchPage)),
|
| - main_counter.AsWeakPtr()));
|
| - content::BrowserThread::PostTask(
|
| - content::BrowserThread::IO, FROM_HERE,
|
| - base::Bind(&CreatePrefetchOnlyInterceptorOnIO,
|
| - src_server()->GetURL(MakeAbsolute(kPrefetchScript)),
|
| - script_counter.AsWeakPtr()));
|
| + auto verify_prefetch_only = base::Bind([](net::URLRequest* request) {
|
| + EXPECT_TRUE(request->load_flags() & net::LOAD_PREFETCH);
|
| + });
|
| +
|
| + prerender::test_utils::InterceptRequestAndCount(
|
| + src_server()->GetURL(MakeAbsolute(kPrefetchPage)), &main_counter,
|
| + verify_prefetch_only);
|
| + prerender::test_utils::InterceptRequestAndCount(
|
| + src_server()->GetURL(MakeAbsolute(kPrefetchScript)), &script_counter,
|
| + verify_prefetch_only);
|
|
|
| std::unique_ptr<TestPrerender> test_prerender =
|
| PrefetchFromFile(kPrefetchPage, FINAL_STATUS_NOSTATE_PREFETCH_FINISHED);
|
| @@ -303,15 +302,14 @@ IN_PROC_BROWSER_TEST_F(NoStatePrefetchBrowserTest, Prefetch301LoadFlags) {
|
| GURL redirect_url = src_server()->GetURL(redirect_path);
|
| GURL page_url = src_server()->GetURL(MakeAbsolute(kPrefetchPage));
|
| RequestCounter redirect_counter;
|
| - content::BrowserThread::PostTask(
|
| - content::BrowserThread::IO, FROM_HERE,
|
| - base::Bind(&CreatePrefetchOnlyInterceptorOnIO, redirect_url,
|
| - redirect_counter.AsWeakPtr()));
|
| + auto verify_prefetch_only = base::Bind([](net::URLRequest* request) {
|
| + EXPECT_TRUE(request->load_flags() & net::LOAD_PREFETCH);
|
| + });
|
| + prerender::test_utils::InterceptRequestAndCount(
|
| + redirect_url, &redirect_counter, verify_prefetch_only);
|
| RequestCounter page_counter;
|
| - content::BrowserThread::PostTask(
|
| - content::BrowserThread::IO, FROM_HERE,
|
| - base::Bind(&CreatePrefetchOnlyInterceptorOnIO, page_url,
|
| - page_counter.AsWeakPtr()));
|
| + prerender::test_utils::InterceptRequestAndCount(page_url, &page_counter,
|
| + verify_prefetch_only);
|
| PrefetchFromFile(redirect_path, FINAL_STATUS_NOSTATE_PREFETCH_FINISHED);
|
| redirect_counter.WaitForCount(1);
|
| page_counter.WaitForCount(1);
|
| @@ -498,4 +496,23 @@ IN_PROC_BROWSER_TEST_F(NoStatePrefetchBrowserTest, HistoryUntouchedByPrefetch) {
|
| EXPECT_EQ(2U, urls.size());
|
| }
|
|
|
| +// Checks that prefetch requests have net::IDLE priority.
|
| +IN_PROC_BROWSER_TEST_F(NoStatePrefetchBrowserTest, IssuesIdlePriorityRequests) {
|
| + GURL script_url = src_server()->GetURL(MakeAbsolute(kPrefetchScript));
|
| + RequestCounter script_counter;
|
| + prerender::test_utils::InterceptRequestAndCount(
|
| + script_url, &script_counter, base::Bind([](net::URLRequest* request) {
|
| +#if defined(OS_ANDROID)
|
| + // On Android requests from prerenders do not get downgraded priority.
|
| + // See: https://crbug.com/652746.
|
| + constexpr net::RequestPriority kExpectedPriority = net::HIGHEST;
|
| +#else
|
| + constexpr net::RequestPriority kExpectedPriority = net::IDLE;
|
| +#endif
|
| + EXPECT_EQ(kExpectedPriority, request->priority());
|
| + }));
|
| + PrefetchFromFile(kPrefetchPage, FINAL_STATUS_NOSTATE_PREFETCH_FINISHED);
|
| + script_counter.WaitForCount(1);
|
| +}
|
| +
|
| } // namespace prerender
|
|
|