| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/prerender/prerender_test_utils.h" | 5 #include "chrome/browser/prerender/prerender_test_utils.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 #include <set> | 8 #include <set> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 170 } | 170 } |
| 171 | 171 |
| 172 void Start() override {} | 172 void Start() override {} |
| 173 | 173 |
| 174 private: | 174 private: |
| 175 ~HangingURLRequestJob() override {} | 175 ~HangingURLRequestJob() override {} |
| 176 }; | 176 }; |
| 177 | 177 |
| 178 class HangingFirstRequestInterceptor : public net::URLRequestInterceptor { | 178 class HangingFirstRequestInterceptor : public net::URLRequestInterceptor { |
| 179 public: | 179 public: |
| 180 HangingFirstRequestInterceptor( | 180 HangingFirstRequestInterceptor(const base::FilePath& file, |
| 181 const base::FilePath& file, | 181 base::Closure callback) |
| 182 base::Callback<void(net::URLRequest*)> callback) | 182 : file_(file), |
| 183 : file_(file), callback_(callback), first_run_(true) {} | 183 callback_(callback), |
| 184 first_run_(true) { |
| 185 } |
| 184 ~HangingFirstRequestInterceptor() override {} | 186 ~HangingFirstRequestInterceptor() override {} |
| 185 | 187 |
| 186 net::URLRequestJob* MaybeInterceptRequest( | 188 net::URLRequestJob* MaybeInterceptRequest( |
| 187 net::URLRequest* request, | 189 net::URLRequest* request, |
| 188 net::NetworkDelegate* network_delegate) const override { | 190 net::NetworkDelegate* network_delegate) const override { |
| 189 if (first_run_) { | 191 if (first_run_) { |
| 190 first_run_ = false; | 192 first_run_ = false; |
| 191 if (!callback_.is_null()) | 193 if (!callback_.is_null()) { |
| 192 callback_.Run(request); | 194 BrowserThread::PostTask( |
| 195 BrowserThread::UI, FROM_HERE, callback_); |
| 196 } |
| 193 return new HangingURLRequestJob(request, network_delegate); | 197 return new HangingURLRequestJob(request, network_delegate); |
| 194 } | 198 } |
| 195 return new net::URLRequestMockHTTPJob( | 199 return new net::URLRequestMockHTTPJob( |
| 196 request, | 200 request, |
| 197 network_delegate, | 201 network_delegate, |
| 198 file_, | 202 file_, |
| 199 BrowserThread::GetBlockingPool()->GetTaskRunnerWithShutdownBehavior( | 203 BrowserThread::GetBlockingPool()->GetTaskRunnerWithShutdownBehavior( |
| 200 base::SequencedWorkerPool::SKIP_ON_SHUTDOWN)); | 204 base::SequencedWorkerPool::SKIP_ON_SHUTDOWN)); |
| 201 } | 205 } |
| 202 | 206 |
| 203 private: | 207 private: |
| 204 base::FilePath file_; | 208 base::FilePath file_; |
| 205 base::Callback<void(net::URLRequest*)> callback_; | 209 base::Closure callback_; |
| 206 mutable bool first_run_; | 210 mutable bool first_run_; |
| 207 }; | 211 }; |
| 208 | 212 |
| 209 // An ExternalProtocolHandler that blocks everything and asserts it never is | 213 // An ExternalProtocolHandler that blocks everything and asserts it never is |
| 210 // called. | 214 // called. |
| 211 class NeverRunsExternalProtocolHandlerDelegate | 215 class NeverRunsExternalProtocolHandlerDelegate |
| 212 : public ExternalProtocolHandler::Delegate { | 216 : public ExternalProtocolHandler::Delegate { |
| 213 public: | 217 public: |
| 214 scoped_refptr<shell_integration::DefaultProtocolClientWorker> | 218 scoped_refptr<shell_integration::DefaultProtocolClientWorker> |
| 215 CreateShellWorker( | 219 CreateShellWorker( |
| (...skipping 24 matching lines...) Expand all Loading... |
| 240 | 244 |
| 241 void LaunchUrlWithoutSecurityCheck( | 245 void LaunchUrlWithoutSecurityCheck( |
| 242 const GURL& url, | 246 const GURL& url, |
| 243 content::WebContents* web_contents) override { | 247 content::WebContents* web_contents) override { |
| 244 NOTREACHED(); | 248 NOTREACHED(); |
| 245 } | 249 } |
| 246 | 250 |
| 247 void FinishedProcessingCheck() override { NOTREACHED(); } | 251 void FinishedProcessingCheck() override { NOTREACHED(); } |
| 248 }; | 252 }; |
| 249 | 253 |
| 250 void CreateHangingFirstRequestInterceptorOnIO( | |
| 251 const GURL& url, | |
| 252 const base::FilePath& file, | |
| 253 base::Callback<void(net::URLRequest*)> callback_io) { | |
| 254 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | |
| 255 std::unique_ptr<net::URLRequestInterceptor> interceptor( | |
| 256 new HangingFirstRequestInterceptor(file, callback_io)); | |
| 257 net::URLRequestFilter::GetInstance()->AddUrlInterceptor( | |
| 258 url, std::move(interceptor)); | |
| 259 } | |
| 260 | |
| 261 } // namespace | 254 } // namespace |
| 262 | 255 |
| 263 RequestCounter::RequestCounter() : count_(0), expected_count_(-1) {} | 256 RequestCounter::RequestCounter() : count_(0), expected_count_(-1) {} |
| 264 | 257 |
| 265 RequestCounter::~RequestCounter() {} | 258 RequestCounter::~RequestCounter() {} |
| 266 | 259 |
| 267 void RequestCounter::RequestStarted() { | 260 void RequestCounter::RequestStarted() { |
| 268 count_++; | 261 count_++; |
| 269 if (loop_ && count_ == expected_count_) | 262 if (loop_ && count_ == expected_count_) |
| 270 loop_->Quit(); | 263 loop_->Quit(); |
| (...skipping 530 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 801 CountingInterceptorWithCallback::Initialize(url, counter, callback_io); | 794 CountingInterceptorWithCallback::Initialize(url, counter, callback_io); |
| 802 } | 795 } |
| 803 | 796 |
| 804 void CreateMockInterceptorOnIO(const GURL& url, const base::FilePath& file) { | 797 void CreateMockInterceptorOnIO(const GURL& url, const base::FilePath& file) { |
| 805 CHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); | 798 CHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); |
| 806 net::URLRequestFilter::GetInstance()->AddUrlInterceptor( | 799 net::URLRequestFilter::GetInstance()->AddUrlInterceptor( |
| 807 url, net::URLRequestMockHTTPJob::CreateInterceptorForSingleFile( | 800 url, net::URLRequestMockHTTPJob::CreateInterceptorForSingleFile( |
| 808 file, content::BrowserThread::GetBlockingPool())); | 801 file, content::BrowserThread::GetBlockingPool())); |
| 809 } | 802 } |
| 810 | 803 |
| 811 void CreateHangingFirstRequestInterceptor( | 804 void CreateHangingFirstRequestInterceptorOnIO( |
| 812 const GURL& url, | 805 const GURL& url, const base::FilePath& file, base::Closure callback) { |
| 813 const base::FilePath& file, | 806 CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 814 base::Callback<void(net::URLRequest*)> callback_io) { | 807 std::unique_ptr<net::URLRequestInterceptor> interceptor( |
| 815 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 808 new HangingFirstRequestInterceptor(file, callback)); |
| 816 content::BrowserThread::PostTask( | 809 net::URLRequestFilter::GetInstance()->AddUrlInterceptor( |
| 817 content::BrowserThread::IO, FROM_HERE, | 810 url, std::move(interceptor)); |
| 818 base::Bind(&CreateHangingFirstRequestInterceptorOnIO, url, file, | |
| 819 callback_io)); | |
| 820 } | 811 } |
| 821 | 812 |
| 822 } // namespace test_utils | 813 } // namespace test_utils |
| 823 | 814 |
| 824 } // namespace prerender | 815 } // namespace prerender |
| OLD | NEW |