Index: content/browser/fileapi/file_writer_delegate_unittest.cc |
diff --git a/content/browser/fileapi/file_writer_delegate_unittest.cc b/content/browser/fileapi/file_writer_delegate_unittest.cc |
index 3d2814cc6ca4bccdbf534ea9ba923ebb7cefc806..ccbc4a563dfcddf5aa42bedb9c0d67cbcec5fb1a 100644 |
--- a/content/browser/fileapi/file_writer_delegate_unittest.cc |
+++ b/content/browser/fileapi/file_writer_delegate_unittest.cc |
@@ -18,6 +18,7 @@ |
#include "net/url_request/url_request.h" |
#include "net/url_request/url_request_context.h" |
#include "net/url_request/url_request_job.h" |
+#include "net/url_request/url_request_job_factory.h" |
#include "net/url_request/url_request_status.h" |
#include "testing/platform_test.h" |
#include "url/gurl.h" |
@@ -74,6 +75,8 @@ class Result { |
FileWriterDelegate::WriteProgressStatus write_status_; |
}; |
+class BlobURLRequestJobFactory; |
+ |
} // namespace (anonymous) |
class FileWriterDelegateTest : public PlatformTest { |
@@ -141,8 +144,6 @@ class FileWriterDelegateTest : public PlatformTest { |
blob_url, net::DEFAULT_PRIORITY, file_writer_delegate_.get(), NULL); |
} |
- static net::URLRequest::ProtocolFactory Factory; |
- |
// This should be alive until the very end of this instance. |
base::MessageLoopForIO loop_; |
@@ -151,6 +152,7 @@ class FileWriterDelegateTest : public PlatformTest { |
net::URLRequestContext empty_context_; |
scoped_ptr<FileWriterDelegate> file_writer_delegate_; |
scoped_ptr<net::URLRequest> request_; |
+ scoped_ptr<BlobURLRequestJobFactory> job_factory_; |
base::ScopedTempDir dir_; |
@@ -208,16 +210,39 @@ class FileWriterDelegateTestJob : public net::URLRequestJob { |
int cursor_; |
}; |
-} // namespace (anonymous) |
+class BlobURLRequestJobFactory : public net::URLRequestJobFactory { |
+ public: |
+ explicit BlobURLRequestJobFactory(const char** content_data) |
+ : content_data_(content_data) { |
+ } |
-// static |
-net::URLRequestJob* FileWriterDelegateTest::Factory( |
- net::URLRequest* request, |
- net::NetworkDelegate* network_delegate, |
- const std::string& scheme) { |
- return new FileWriterDelegateTestJob( |
- request, network_delegate, FileWriterDelegateTest::content_); |
-} |
+ virtual net::URLRequestJob* MaybeCreateJobWithProtocolHandler( |
+ const std::string& scheme, |
+ net::URLRequest* request, |
+ net::NetworkDelegate* network_delegate) const OVERRIDE { |
+ return new FileWriterDelegateTestJob( |
+ request, network_delegate, *content_data_); |
+ } |
+ |
+ virtual bool IsHandledProtocol(const std::string& scheme) const OVERRIDE { |
+ return scheme == "blob"; |
+ } |
+ |
+ virtual bool IsHandledURL(const GURL& url) const OVERRIDE { |
+ return url.SchemeIs("blob"); |
+ } |
+ |
+ virtual bool IsSafeRedirectTarget(const GURL& location) const OVERRIDE { |
+ return true; |
+ } |
+ |
+ private: |
+ const char** content_data_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(BlobURLRequestJobFactory); |
+}; |
+ |
+} // namespace (anonymous) |
void FileWriterDelegateTest::SetUp() { |
ASSERT_TRUE(dir_.CreateUniqueTempDir()); |
@@ -227,11 +252,11 @@ void FileWriterDelegateTest::SetUp() { |
ASSERT_EQ(base::File::FILE_OK, |
AsyncFileTestHelper::CreateFile( |
file_system_context_, GetFileSystemURL("test"))); |
- net::URLRequest::Deprecated::RegisterProtocolFactory("blob", &Factory); |
+ job_factory_.reset(new BlobURLRequestJobFactory(&content_)); |
+ empty_context_.set_job_factory(job_factory_.get()); |
} |
void FileWriterDelegateTest::TearDown() { |
- net::URLRequest::Deprecated::RegisterProtocolFactory("blob", NULL); |
file_system_context_ = NULL; |
base::RunLoop().RunUntilIdle(); |
} |