| Index: webkit/fileapi/file_system_operation.h
|
| diff --git a/webkit/fileapi/file_system_operation.h b/webkit/fileapi/file_system_operation.h
|
| index 01e2da1853c6dbeba2f55494a71137b6ee7f9b27..09392b498e8d13c22ba12e6cd803d0133431dc7c 100644
|
| --- a/webkit/fileapi/file_system_operation.h
|
| +++ b/webkit/fileapi/file_system_operation.h
|
| @@ -33,8 +33,11 @@ class FileWriterDelegate;
|
| // Only one method(CreateFile, CreateDirectory, Copy, Move, DirectoryExists,
|
| // GetMetadata, ReadDirectory and Remove) may be called during the lifetime of
|
| // this object and it should be called no more than once.
|
| +// This class is self-destructed and an instance automatically gets deleted
|
| +// when its operation is finished.
|
| class FileSystemOperation {
|
| public:
|
| + // |dispatcher| will be owned by this class.
|
| FileSystemOperation(FileSystemCallbackDispatcher* dispatcher,
|
| scoped_refptr<base::MessageLoopProxy> proxy);
|
| virtual ~FileSystemOperation();
|
| @@ -62,15 +65,16 @@ class FileSystemOperation {
|
|
|
| virtual void Remove(const FilePath& path, bool recursive);
|
|
|
| - virtual void Write(
|
| - scoped_refptr<URLRequestContext> url_request_context,
|
| - const FilePath& path, const GURL& blob_url, int64 offset);
|
| + virtual void Write(scoped_refptr<URLRequestContext> url_request_context,
|
| + const FilePath& path,
|
| + const GURL& blob_url,
|
| + int64 offset);
|
|
|
| virtual void Truncate(const FilePath& path, int64 length);
|
|
|
| virtual void TouchFile(const FilePath& path,
|
| - const base::Time& last_access_time,
|
| - const base::Time& last_modified_time);
|
| + const base::Time& last_access_time,
|
| + const base::Time& last_modified_time);
|
|
|
| // Try to cancel the current operation [we support cancelling write or
|
| // truncate only]. Report failure for the current operation, then tell the
|
| @@ -100,7 +104,15 @@ class FileSystemOperation {
|
| OperationType pending_operation_;
|
| #endif
|
|
|
| - FileSystemCallbackDispatcher* dispatcher() const { return dispatcher_.get(); }
|
| + // Returns a destructive dispatcher which deletes the operation instance
|
| + // after any of its callback methods is called (except for DidWrite with
|
| + // complete=false cases).
|
| + FileSystemCallbackDispatcher* destructive_dispatcher() const {
|
| + return destructive_dispatcher_.get();
|
| + }
|
| +
|
| + // Returns a non-destructive dispatcher.
|
| + FileSystemCallbackDispatcher* non_destructive_dispatcher() const;
|
|
|
| private:
|
| // Callback for CreateFile for |exclusive|=true cases.
|
| @@ -143,7 +155,7 @@ class FileSystemOperation {
|
| // Proxy for calling file_util_proxy methods.
|
| scoped_refptr<base::MessageLoopProxy> proxy_;
|
|
|
| - scoped_ptr<FileSystemCallbackDispatcher> dispatcher_;
|
| + scoped_ptr<FileSystemCallbackDispatcher> destructive_dispatcher_;
|
|
|
| base::ScopedCallbackFactory<FileSystemOperation> callback_factory_;
|
|
|
|
|