summaryrefslogtreecommitdiffstats
path: root/net/url_request
diff options
context:
space:
mode:
authordavidben@chromium.org <davidben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-14 17:56:48 +0000
committerdavidben@chromium.org <davidben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-14 17:56:48 +0000
commit52c41b478ddaa2353c1a9fdb834557c51209dbf3 (patch)
treea9d55ff3e6b5641d18f128e0602cea1736def212 /net/url_request
parent296556cfa9dcef7ad152bad87caf23ae795a1d39 (diff)
downloadchromium_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.cc16
-rw-r--r--net/url_request/url_request_test_job.h5
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;