Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(438)

Side by Side Diff: webkit/fileapi/file_system_dir_url_request_job.cc

Issue 9016020: Cleanup FileSystemOperation for preparing for adding FSO-factory method (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "webkit/fileapi/file_system_dir_url_request_job.h" 5 #include "webkit/fileapi/file_system_dir_url_request_job.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
(...skipping 23 matching lines...) Expand all
34 FilePath relative_path; 34 FilePath relative_path;
35 GURL unused_url; 35 GURL unused_url;
36 FileSystemType unused_type; 36 FileSystemType unused_type;
37 CrackFileSystemURL(url, &unused_url, &unused_type, &relative_path); 37 CrackFileSystemURL(url, &unused_url, &unused_type, &relative_path);
38 return relative_path; 38 return relative_path;
39 } 39 }
40 40
41 class FileSystemDirURLRequestJob::CallbackDispatcher 41 class FileSystemDirURLRequestJob::CallbackDispatcher
42 : public FileSystemCallbackDispatcher { 42 : public FileSystemCallbackDispatcher {
43 public: 43 public:
44 explicit CallbackDispatcher(FileSystemDirURLRequestJob* job) 44 // An instance of this class must be created by Create()
45 : job_(job) { 45 // (so that we do not leak ownership).
46 DCHECK(job_); 46 static scoped_ptr<FileSystemCallbackDispatcher> Create(
47 FileSystemDirURLRequestJob* job) {
48 return scoped_ptr<FileSystemCallbackDispatcher>(
49 new CallbackDispatcher(job));
47 } 50 }
48 51
49 // fileapi::FileSystemCallbackDispatcher overrides. 52 // fileapi::FileSystemCallbackDispatcher overrides.
50 virtual void DidSucceed() OVERRIDE { 53 virtual void DidSucceed() OVERRIDE {
51 NOTREACHED(); 54 NOTREACHED();
52 } 55 }
53 56
54 virtual void DidReadMetadata(const base::PlatformFileInfo& file_info, 57 virtual void DidReadMetadata(const base::PlatformFileInfo& file_info,
55 const FilePath& platform_path) OVERRIDE { 58 const FilePath& platform_path) OVERRIDE {
56 NOTREACHED(); 59 NOTREACHED();
(...skipping 15 matching lines...) Expand all
72 } 75 }
73 76
74 virtual void DidFail(base::PlatformFileError error_code) OVERRIDE { 77 virtual void DidFail(base::PlatformFileError error_code) OVERRIDE {
75 int rv = net::ERR_FILE_NOT_FOUND; 78 int rv = net::ERR_FILE_NOT_FOUND;
76 if (error_code == base::PLATFORM_FILE_ERROR_INVALID_URL) 79 if (error_code == base::PLATFORM_FILE_ERROR_INVALID_URL)
77 rv = net::ERR_INVALID_URL; 80 rv = net::ERR_INVALID_URL;
78 job_->NotifyDone(URLRequestStatus(URLRequestStatus::FAILED, rv)); 81 job_->NotifyDone(URLRequestStatus(URLRequestStatus::FAILED, rv));
79 } 82 }
80 83
81 private: 84 private:
85 explicit CallbackDispatcher(FileSystemDirURLRequestJob* job) : job_(job) {
86 DCHECK(job_);
87 }
88
82 // TODO(adamk): Get rid of the need for refcounting here by 89 // TODO(adamk): Get rid of the need for refcounting here by
83 // allowing FileSystemOperations to be cancelled. 90 // allowing FileSystemOperations to be cancelled.
84 scoped_refptr<FileSystemDirURLRequestJob> job_; 91 scoped_refptr<FileSystemDirURLRequestJob> job_;
85 DISALLOW_COPY_AND_ASSIGN(CallbackDispatcher); 92 DISALLOW_COPY_AND_ASSIGN(CallbackDispatcher);
86 }; 93 };
87 94
88 FileSystemDirURLRequestJob::FileSystemDirURLRequestJob( 95 FileSystemDirURLRequestJob::FileSystemDirURLRequestJob(
89 URLRequest* request, FileSystemContext* file_system_context, 96 URLRequest* request, FileSystemContext* file_system_context,
90 scoped_refptr<base::MessageLoopProxy> file_thread_proxy) 97 scoped_refptr<base::MessageLoopProxy> file_thread_proxy)
91 : URLRequestJob(request), 98 : URLRequestJob(request),
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 175
169 if (has_more) { 176 if (has_more) {
170 GetNewOperation()->ReadDirectory(request_->url()); 177 GetNewOperation()->ReadDirectory(request_->url());
171 } else { 178 } else {
172 set_expected_content_size(data_.size()); 179 set_expected_content_size(data_.size());
173 NotifyHeadersComplete(); 180 NotifyHeadersComplete();
174 } 181 }
175 } 182 }
176 183
177 FileSystemOperation* FileSystemDirURLRequestJob::GetNewOperation() { 184 FileSystemOperation* FileSystemDirURLRequestJob::GetNewOperation() {
178 return new FileSystemOperation(new CallbackDispatcher(this), 185 return new FileSystemOperation(CallbackDispatcher::Create(this),
179 file_thread_proxy_, 186 file_thread_proxy_,
180 file_system_context_); 187 file_system_context_);
181 } 188 }
182 189
183 } // namespace fileapi 190 } // namespace fileapi
OLDNEW
« no previous file with comments | « webkit/fileapi/file_system_context.cc ('k') | webkit/fileapi/file_system_dir_url_request_job_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698