Index: net/url_request/url_request_file_job.cc |
diff --git a/net/url_request/url_request_file_job.cc b/net/url_request/url_request_file_job.cc |
index c9378dda6b82f782cbbc92235beb7707593bc39a..0f29c0ee3423a66e499d9cddbf5990c69455db5e 100644 |
--- a/net/url_request/url_request_file_job.cc |
+++ b/net/url_request/url_request_file_job.cc |
@@ -84,8 +84,9 @@ class URLRequestFileJob::AsyncResolver |
}; |
URLRequestFileJob::URLRequestFileJob(URLRequest* request, |
+ NetworkDelegate* network_delegate, |
const FilePath& file_path) |
- : URLRequestJob(request, request->context()->network_delegate()), |
+ : URLRequestJob(request, network_delegate), |
file_path_(file_path), |
stream_(NULL), |
is_directory_(false), |
@@ -94,14 +95,16 @@ URLRequestFileJob::URLRequestFileJob(URLRequest* request, |
// static |
URLRequestJob* URLRequestFileJob::Factory(URLRequest* request, |
+ NetworkDelegate* network_delegate, |
const std::string& scheme) { |
FilePath file_path; |
const bool is_file = FileURLToFilePath(request->url(), &file_path); |
// Check file access permissions. |
- if (!IsFileAccessAllowed(*request, file_path)) |
- return new URLRequestErrorJob(request, ERR_ACCESS_DENIED); |
- |
+ if (!network_delegate || |
+ !network_delegate->CanAccessFile(*request, file_path)) { |
+ return new URLRequestErrorJob(request, network_delegate, ERR_ACCESS_DENIED); |
+ } |
// We need to decide whether to create URLRequestFileJob for file access or |
// URLRequestFileDirJob for directory access. To avoid accessing the |
// filesystem, we only look at the path string here. |
@@ -111,11 +114,11 @@ URLRequestJob* URLRequestFileJob::Factory(URLRequest* request, |
if (is_file && |
file_util::EndsWithSeparator(file_path) && |
file_path.IsAbsolute()) |
- return new URLRequestFileDirJob(request, file_path); |
+ return new URLRequestFileDirJob(request, network_delegate, file_path); |
// Use a regular file request job for all non-directories (including invalid |
// file names). |
- return new URLRequestFileJob(request, file_path); |
+ return new URLRequestFileJob(request, network_delegate, file_path); |
} |
void URLRequestFileJob::Start() { |
@@ -250,15 +253,6 @@ void URLRequestFileJob::SetExtraRequestHeaders( |
} |
} |
-// static |
-bool URLRequestFileJob::IsFileAccessAllowed(const URLRequest& request, |
- const FilePath& path) { |
- const NetworkDelegate* delegate = request.context()->network_delegate(); |
- if (delegate) |
- return delegate->CanAccessFile(request, path); |
- return false; |
-} |
- |
URLRequestFileJob::~URLRequestFileJob() { |
DCHECK(!async_resolver_); |
} |