Chromium Code Reviews| Index: webkit/fileapi/file_system_dir_url_request_job.cc |
| diff --git a/webkit/fileapi/file_system_dir_url_request_job.cc b/webkit/fileapi/file_system_dir_url_request_job.cc |
| index 9fbe27a41573ea99070c3f2e4423c1bf61a57da9..62a13e567fdb71c476ceb5a68fa289675e01d0b7 100644 |
| --- a/webkit/fileapi/file_system_dir_url_request_job.cc |
| +++ b/webkit/fileapi/file_system_dir_url_request_job.cc |
| @@ -41,9 +41,12 @@ static FilePath GetRelativePath(const GURL& url) { |
| class FileSystemDirURLRequestJob::CallbackDispatcher |
| : public FileSystemCallbackDispatcher { |
| public: |
| - explicit CallbackDispatcher(FileSystemDirURLRequestJob* job) |
| - : job_(job) { |
| - DCHECK(job_); |
| + // An instance of this class must be created by Create() |
| + // (so that we do not leak ownerships). |
|
ericu
2012/01/09 18:44:44
s/ownerships/ownership/ here and elsewhere.
kinuko
2012/01/10 09:48:53
Done.
|
| + static scoped_ptr<FileSystemCallbackDispatcher> Create( |
| + FileSystemDirURLRequestJob* job) { |
| + return scoped_ptr<FileSystemCallbackDispatcher>( |
| + new CallbackDispatcher(job)); |
| } |
| // fileapi::FileSystemCallbackDispatcher overrides. |
| @@ -79,6 +82,10 @@ class FileSystemDirURLRequestJob::CallbackDispatcher |
| } |
| private: |
| + explicit CallbackDispatcher(FileSystemDirURLRequestJob* job) : job_(job) { |
| + DCHECK(job_); |
| + } |
| + |
| // TODO(adamk): Get rid of the need for refcounting here by |
| // allowing FileSystemOperations to be cancelled. |
| scoped_refptr<FileSystemDirURLRequestJob> job_; |
| @@ -175,7 +182,7 @@ void FileSystemDirURLRequestJob::DidReadDirectory( |
| } |
| FileSystemOperation* FileSystemDirURLRequestJob::GetNewOperation() { |
| - return new FileSystemOperation(new CallbackDispatcher(this), |
| + return new FileSystemOperation(CallbackDispatcher::Create(this), |
| file_thread_proxy_, |
| file_system_context_); |
| } |