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

Unified Diff: chrome/browser/prerender/prerender_test_utils.cc

Issue 2540203002: NoStatePrefetch: Add a test to verify request priority (Closed)
Patch Set: expect a different priority on Android 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/prerender/prerender_test_utils.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/prerender/prerender_test_utils.cc
diff --git a/chrome/browser/prerender/prerender_test_utils.cc b/chrome/browser/prerender/prerender_test_utils.cc
index 84957e2d5de5a9e173b6b90b12120f7b7bb83f22..c975bcf0b53fcc9a44e92edf090af1f1238e3976 100644
--- a/chrome/browser/prerender/prerender_test_utils.cc
+++ b/chrome/browser/prerender/prerender_test_utils.cc
@@ -10,6 +10,7 @@
#include <utility>
#include <vector>
+#include "base/callback.h"
#include "base/command_line.h"
#include "base/strings/string_split.h"
#include "base/strings/utf_string_conversions.h"
@@ -105,18 +106,29 @@ class CountingInterceptor : public net::URLRequestInterceptor {
mutable base::WeakPtrFactory<CountingInterceptor> weak_factory_;
};
-// URLRequestInterceptor which asserts that the request is prefetch only. Pings
-// |counter| after the flag is checked.
-class PrefetchOnlyInterceptor : public net::URLRequestInterceptor {
+class CountingInterceptorWithCallback : public net::URLRequestInterceptor {
public:
- explicit PrefetchOnlyInterceptor(const base::WeakPtr<RequestCounter>& counter)
- : counter_(counter) {}
- ~PrefetchOnlyInterceptor() override {}
+ // Inserts the interceptor object to intercept requests to |url|. Can be
+ // called on any thread. Assumes that |counter| lives on the UI thread. The
+ // |callback_io| will be called on IO thread with the net::URLrequest
+ // provided.
+ static void Initialize(const GURL& url,
+ RequestCounter* counter,
+ base::Callback<void(net::URLRequest*)> callback_io) {
+ content::BrowserThread::PostTask(
+ content::BrowserThread::IO, FROM_HERE,
+ base::Bind(&CountingInterceptorWithCallback::CreateAndAddOnIO, url,
+ counter->AsWeakPtr(), callback_io));
+ }
+ // net::URLRequestInterceptor:
net::URLRequestJob* MaybeInterceptRequest(
net::URLRequest* request,
net::NetworkDelegate* network_delegate) const override {
- EXPECT_TRUE(request->load_flags() & net::LOAD_PREFETCH);
+ // Run the callback.
+ callback_.Run(request);
+
+ // Ping the request counter.
content::BrowserThread::PostTask(
content::BrowserThread::UI, FROM_HERE,
base::Bind(&RequestCounter::RequestStarted, counter_));
@@ -124,7 +136,27 @@ class PrefetchOnlyInterceptor : public net::URLRequestInterceptor {
}
private:
+ CountingInterceptorWithCallback(
+ const base::WeakPtr<RequestCounter>& counter,
+ base::Callback<void(net::URLRequest*)> callback)
+ : callback_(callback), counter_(counter) {}
+
+ static void CreateAndAddOnIO(
+ const GURL& url,
+ const base::WeakPtr<RequestCounter>& counter,
+ base::Callback<void(net::URLRequest*)> callback_io) {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
+ // Create the object with base::WrapUnique to restrict access to the
+ // constructor.
+ net::URLRequestFilter::GetInstance()->AddUrlInterceptor(
+ url, base::WrapUnique(
+ new CountingInterceptorWithCallback(counter, callback_io)));
+ }
+
+ base::Callback<void(net::URLRequest*)> callback_;
base::WeakPtr<RequestCounter> counter_;
+
+ DISALLOW_COPY_AND_ASSIGN(CountingInterceptorWithCallback);
};
// URLRequestJob (and associated handler) which hangs.
@@ -721,12 +753,11 @@ void CreateCountingInterceptorOnIO(
url, base::MakeUnique<CountingInterceptor>(file, counter));
}
-void CreatePrefetchOnlyInterceptorOnIO(
+void InterceptRequestAndCount(
const GURL& url,
- const base::WeakPtr<RequestCounter>& counter) {
- CHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO));
- net::URLRequestFilter::GetInstance()->AddUrlInterceptor(
- url, base::MakeUnique<PrefetchOnlyInterceptor>(counter));
+ RequestCounter* counter,
+ base::Callback<void(net::URLRequest*)> callback_io) {
+ CountingInterceptorWithCallback::Initialize(url, counter, callback_io);
}
void CreateMockInterceptorOnIO(const GURL& url, const base::FilePath& file) {
« no previous file with comments | « chrome/browser/prerender/prerender_test_utils.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698