Chromium Code Reviews| 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..4328920f08de19906dac2753191da78e436cf6e4 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,24 @@ IN_PROC_BROWSER_TEST_F(NoStatePrefetchBrowserTest, HistoryUntouchedByPrefetch) { |
| EXPECT_EQ(2U, urls.size()); |
| } |
| +// Checks that prefetch requests have net::IDLE priority. |
| +// On Android requests from prerenders do not get downgraded priority. |
| +// See: https://crbug.com/652746. |
| +#if defined(OS_ANDROID) |
| +#define MAYBE_IssuesIdlePriorityRequests DISABLED_IssuesIdlePriorityRequests |
|
droger
2016/12/01 10:57:00
Should we keep the test enabled on Android, but ch
pasko
2016/12/01 12:04:54
Good idea. Done. PTAL.
Since to bind a lambda the
|
| +#else |
| +#define MAYBE_IssuesIdlePriorityRequests IssuesIdlePriorityRequests |
| +#endif |
| +IN_PROC_BROWSER_TEST_F(NoStatePrefetchBrowserTest, |
| + MAYBE_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) { |
| + EXPECT_EQ(net::IDLE, request->priority()); |
| + })); |
| + PrefetchFromFile(kPrefetchPage, FINAL_STATUS_NOSTATE_PREFETCH_FINISHED); |
| + script_counter.WaitForCount(1); |
| +} |
| + |
| } // namespace prerender |