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

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

Issue 2508143002: Prerender: add true simultaneous nostate prefetch test. (Closed)
Patch Set: comments Created 4 years, 1 month 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 | « no previous file | chrome/browser/prerender/prerender_nostate_prefetch_browsertest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/prerender/prerender_browsertest.cc
diff --git a/chrome/browser/prerender/prerender_browsertest.cc b/chrome/browser/prerender/prerender_browsertest.cc
index 8f4dbe09173d4ee5dfa386001409ccfb2fc73f57..7f544181e3fdb187381483c90ecc95a3d80d5fd0 100644
--- a/chrome/browser/prerender/prerender_browsertest.cc
+++ b/chrome/browser/prerender/prerender_browsertest.cc
@@ -136,6 +136,7 @@ using content::WebContentsObserver;
using net::NetworkChangeNotifier;
using prerender::test_utils::RequestCounter;
using prerender::test_utils::CreateCountingInterceptorOnIO;
+using prerender::test_utils::CreateHangingFirstRequestInterceptorOnIO;
using prerender::test_utils::CreateMockInterceptorOnIO;
using prerender::test_utils::TestPrerender;
using prerender::test_utils::TestPrerenderContents;
@@ -488,67 +489,6 @@ class RestorePrerenderMode {
PrerenderManager::PrerenderManagerMode prev_mode_;
};
-// URLRequestJob (and associated handler) which hangs.
-class HangingURLRequestJob : public net::URLRequestJob {
- public:
- HangingURLRequestJob(net::URLRequest* request,
- net::NetworkDelegate* network_delegate)
- : net::URLRequestJob(request, network_delegate) {
- }
-
- void Start() override {}
-
- private:
- ~HangingURLRequestJob() override {}
-};
-
-class HangingFirstRequestInterceptor : public net::URLRequestInterceptor {
- public:
- HangingFirstRequestInterceptor(const base::FilePath& file,
- base::Closure callback)
- : file_(file),
- callback_(callback),
- first_run_(true) {
- }
- ~HangingFirstRequestInterceptor() override {}
-
- net::URLRequestJob* MaybeInterceptRequest(
- net::URLRequest* request,
- net::NetworkDelegate* network_delegate) const override {
- if (first_run_) {
- first_run_ = false;
- if (!callback_.is_null()) {
- BrowserThread::PostTask(
- BrowserThread::UI, FROM_HERE, callback_);
- }
- return new HangingURLRequestJob(request, network_delegate);
- }
- return new net::URLRequestMockHTTPJob(
- request,
- network_delegate,
- file_,
- BrowserThread::GetBlockingPool()->GetTaskRunnerWithShutdownBehavior(
- base::SequencedWorkerPool::SKIP_ON_SHUTDOWN));
- }
-
- private:
- base::FilePath file_;
- base::Closure callback_;
- mutable bool first_run_;
-};
-
-// Makes |url| never respond on the first load, and then with the contents of
-// |file| afterwards. When the first load has been scheduled, runs |callback| on
-// the UI thread.
-void CreateHangingFirstRequestInterceptorOnIO(
- const GURL& url, const base::FilePath& file, base::Closure callback) {
- CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
- std::unique_ptr<net::URLRequestInterceptor> never_respond_handler(
- new HangingFirstRequestInterceptor(file, callback));
- net::URLRequestFilter::GetInstance()->AddUrlInterceptor(
- url, std::move(never_respond_handler));
-}
-
// A ContentBrowserClient that cancels all prerenderers on OpenURL.
class TestContentBrowserClient : public ChromeContentBrowserClient {
public:
« no previous file with comments | « no previous file | chrome/browser/prerender/prerender_nostate_prefetch_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698