diff options
author | davidben@chromium.org <davidben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-14 17:56:48 +0000 |
---|---|---|
committer | davidben@chromium.org <davidben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-14 17:56:48 +0000 |
commit | 52c41b478ddaa2353c1a9fdb834557c51209dbf3 (patch) | |
tree | a9d55ff3e6b5641d18f128e0602cea1736def212 /net/url_request | |
parent | 296556cfa9dcef7ad152bad87caf23ae795a1d39 (diff) | |
download | chromium_src-52c41b478ddaa2353c1a9fdb834557c51209dbf3.zip chromium_src-52c41b478ddaa2353c1a9fdb834557c51209dbf3.tar.gz chromium_src-52c41b478ddaa2353c1a9fdb834557c51209dbf3.tar.bz2 |
Reland "Fix various issues in RedirectToFileResourceHandler."
It got reverted due to ASan issues. Fix child_id registration in
ResourceDispatcherHostTests so that they happen on ForwardingFilter creation,
rather than ad-hoc on a per-request basis.
Original description:
> - Handle errors in creating temporary files.
> - Cancel on write failure instead of resuming. This used to work, but got
> lost in some refactoring in r142108.
> - Fix the OnResponseCompleted resume logic to account for partial writes.
> - Don't lose write errors which occur after OnResponseCompleted is received.
> - WeakPtrFactory goes after other members.
> - OnWillStart was never forwarded to downstream handlers.
> - Make sure the file is closed before deleting it.
>
> Also add a lot of machinery so we can better unit test this stack.
Original Review URL: https://codereview.chromium.org/82273002
BUG=316634,347663
TEST=ResourceDispatcherHostTest.DownloadToFile
ResourceDispatcherHostTest.RegisterDownloadedTempFile
ResourceLoaderRedirectToFileTest.*
TemporaryFileStreamTest.Basic
Review URL: https://codereview.chromium.org/199453002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@257147 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/url_request')
-rw-r--r-- | net/url_request/url_request_test_job.cc | 16 | ||||
-rw-r--r-- | net/url_request/url_request_test_job.h | 5 |
2 files changed, 15 insertions, 6 deletions
diff --git a/net/url_request/url_request_test_job.cc b/net/url_request/url_request_test_job.cc index 31a07fe..422e080 100644 --- a/net/url_request/url_request_test_job.cc +++ b/net/url_request/url_request_test_job.cc @@ -24,6 +24,15 @@ typedef std::list<URLRequestTestJob*> URLRequestJobList; base::LazyInstance<URLRequestJobList>::Leaky g_pending_jobs = LAZY_INSTANCE_INITIALIZER; +class TestJobProtocolHandler : public URLRequestJobFactory::ProtocolHandler { + public: + // URLRequestJobFactory::ProtocolHandler implementation: + virtual URLRequestJob* MaybeCreateJob( + URLRequest* request, NetworkDelegate* network_delegate) const OVERRIDE { + return new URLRequestTestJob(request, network_delegate); + } +}; + } // namespace // static getters for known URLs @@ -98,10 +107,9 @@ std::string URLRequestTestJob::test_error_headers() { } // static -URLRequestJob* URLRequestTestJob::Factory(URLRequest* request, - NetworkDelegate* network_delegate, - const std::string& scheme) { - return new URLRequestTestJob(request, network_delegate); +URLRequestJobFactory::ProtocolHandler* +URLRequestTestJob::CreateProtocolHandler() { + return new TestJobProtocolHandler(); } URLRequestTestJob::URLRequestTestJob(URLRequest* request, diff --git a/net/url_request/url_request_test_job.h b/net/url_request/url_request_test_job.h index 717cc0f..1a85fb0 100644 --- a/net/url_request/url_request_test_job.h +++ b/net/url_request/url_request_test_job.h @@ -11,6 +11,7 @@ #include "net/base/load_timing_info.h" #include "net/url_request/url_request.h" #include "net/url_request/url_request_job.h" +#include "net/url_request/url_request_job_factory.h" namespace net { @@ -103,8 +104,8 @@ class NET_EXPORT_PRIVATE URLRequestTestJob : public URLRequestJob { RequestPriority priority() const { return priority_; } - // Factory method for protocol factory registration if callers don't subclass - static URLRequest::ProtocolFactory Factory; + // Create a protocol handler for callers that don't subclass. + static URLRequestJobFactory::ProtocolHandler* CreateProtocolHandler(); // Job functions virtual void SetPriority(RequestPriority priority) OVERRIDE; |