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 |