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

Side by Side Diff: webkit/browser/fileapi/copy_or_move_operation_delegate.h

Issue 23621026: Extract CopyOrMoveFile operation into classes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 3 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
« no previous file with comments | « no previous file | webkit/browser/fileapi/copy_or_move_operation_delegate.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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 #ifndef WEBKIT_BROWSER_FILEAPI_COPY_OR_MOVE_OPERATION_DELEGATE_H_ 5 #ifndef WEBKIT_BROWSER_FILEAPI_COPY_OR_MOVE_OPERATION_DELEGATE_H_
6 #define WEBKIT_BROWSER_FILEAPI_COPY_OR_MOVE_OPERATION_DELEGATE_H_ 6 #define WEBKIT_BROWSER_FILEAPI_COPY_OR_MOVE_OPERATION_DELEGATE_H_
7 7
8 #include <stack> 8 #include <stack>
9 9
10 #include "base/memory/ref_counted.h" 10 #include "base/memory/ref_counted.h"
11 #include "base/memory/scoped_ptr.h" 11 #include "base/memory/scoped_ptr.h"
12 #include "webkit/browser/fileapi/recursive_operation_delegate.h" 12 #include "webkit/browser/fileapi/recursive_operation_delegate.h"
13 13
14 namespace webkit_blob { 14 namespace webkit_blob {
15 class ShareableFileReference; 15 class ShareableFileReference;
16 } 16 }
17 17
18 namespace fileapi { 18 namespace fileapi {
19 19
20 class CopyOrMoveFileValidator; 20 class CopyOrMoveFileValidator;
21 21
22 // A delegate class for recursive copy or move operations. 22 // A delegate class for recursive copy or move operations.
23 class CopyOrMoveOperationDelegate 23 class CopyOrMoveOperationDelegate
24 : public RecursiveOperationDelegate { 24 : public RecursiveOperationDelegate {
25 public: 25 public:
26 class CopyOrMoveImpl;
27
26 enum OperationType { 28 enum OperationType {
27 OPERATION_COPY, 29 OPERATION_COPY,
28 OPERATION_MOVE 30 OPERATION_MOVE
29 }; 31 };
30 32
31 CopyOrMoveOperationDelegate( 33 CopyOrMoveOperationDelegate(
32 FileSystemContext* file_system_context, 34 FileSystemContext* file_system_context,
33 const FileSystemURL& src_root, 35 const FileSystemURL& src_root,
34 const FileSystemURL& dest_root, 36 const FileSystemURL& dest_root,
35 OperationType operation_type, 37 OperationType operation_type,
36 const StatusCallback& callback); 38 const StatusCallback& callback);
37 virtual ~CopyOrMoveOperationDelegate(); 39 virtual ~CopyOrMoveOperationDelegate();
38 40
39 // RecursiveOperationDelegate overrides: 41 // RecursiveOperationDelegate overrides:
40 virtual void Run() OVERRIDE; 42 virtual void Run() OVERRIDE;
41 virtual void RunRecursively() OVERRIDE; 43 virtual void RunRecursively() OVERRIDE;
42 virtual void ProcessFile(const FileSystemURL& url, 44 virtual void ProcessFile(const FileSystemURL& url,
43 const StatusCallback& callback) OVERRIDE; 45 const StatusCallback& callback) OVERRIDE;
44 virtual void ProcessDirectory(const FileSystemURL& url, 46 virtual void ProcessDirectory(const FileSystemURL& url,
45 const StatusCallback& callback) OVERRIDE; 47 const StatusCallback& callback) OVERRIDE;
46 48
47 private: 49 private:
48 struct URLPair {
49 URLPair(const FileSystemURL& src, const FileSystemURL& dest)
50 : src(src),
51 dest(dest) {
52 }
53 FileSystemURL src;
54 FileSystemURL dest;
55 };
56
57 void DidTryCopyOrMoveFile(base::PlatformFileError error); 50 void DidTryCopyOrMoveFile(base::PlatformFileError error);
58 void DidTryRemoveDestRoot(base::PlatformFileError error); 51 void DidTryRemoveDestRoot(base::PlatformFileError error);
59 void CopyOrMoveFile( 52 void DidFinishRecursiveCopyDir(const FileSystemURL& src,
60 const URLPair& url_pair, 53 const StatusCallback& callback,
61 const StatusCallback& callback); 54 base::PlatformFileError error);
62 void DidCreateSnapshot( 55 void DidRemoveSourceForMove(const StatusCallback& callback,
63 const URLPair& url_pair, 56 base::PlatformFileError error);
64 const StatusCallback& callback, 57
65 base::PlatformFileError error, 58 // Starts Copy (or Move based on |operation_type_|) from |src_url| to
66 const base::PlatformFileInfo& file_info, 59 // |dest_url|. Upon completion |callback| is invoked.
67 const base::FilePath& platform_path, 60 // This can be run for multiple files in parallel.
68 const scoped_refptr<webkit_blob::ShareableFileReference>& file_ref); 61 void CopyOrMoveFile(const FileSystemURL& src_url,
69 void DidValidateFile( 62 const FileSystemURL& dest_url,
70 const FileSystemURL& dest, 63 const StatusCallback& callback);
71 const StatusCallback& callback, 64 void DidCopyOrMoveFile(CopyOrMoveImpl* impl,
72 const base::PlatformFileInfo& file_info, 65 const StatusCallback& callback,
73 const base::FilePath& platform_path, 66 base::PlatformFileError error);
74 base::PlatformFileError error);
75 void DidFinishRecursiveCopyDir(
76 const FileSystemURL& src,
77 const StatusCallback& callback,
78 base::PlatformFileError error);
79 void DidFinishCopy(
80 const URLPair& url_pair,
81 const StatusCallback& callback,
82 base::PlatformFileError error);
83 void DoPostWriteValidation(
84 const URLPair& url_pair,
85 const StatusCallback& callback,
86 base::PlatformFileError error,
87 const base::PlatformFileInfo& file_info,
88 const base::FilePath& platform_path,
89 const scoped_refptr<webkit_blob::ShareableFileReference>& file_ref);
90 void DidPostWriteValidation(
91 const URLPair& url_pair,
92 const StatusCallback& callback,
93 const scoped_refptr<webkit_blob::ShareableFileReference>& file_ref,
94 base::PlatformFileError error);
95 void DidRemoveSourceForMove(
96 const StatusCallback& callback,
97 base::PlatformFileError error);
98 void DidRemoveDestForError(
99 base::PlatformFileError prior_error,
100 const StatusCallback& callback,
101 base::PlatformFileError error);
102 67
103 FileSystemURL CreateDestURL(const FileSystemURL& src_url) const; 68 FileSystemURL CreateDestURL(const FileSystemURL& src_url) const;
104 69
105 FileSystemURL src_root_; 70 FileSystemURL src_root_;
106 FileSystemURL dest_root_; 71 FileSystemURL dest_root_;
107 bool same_file_system_; 72 bool same_file_system_;
108 OperationType operation_type_; 73 OperationType operation_type_;
109 StatusCallback callback_; 74 StatusCallback callback_;
110 75
111 scoped_refptr<webkit_blob::ShareableFileReference> current_file_ref_; 76 std::set<CopyOrMoveImpl*> running_copy_set_;
112
113 scoped_ptr<CopyOrMoveFileValidator> validator_;
114
115 base::WeakPtrFactory<CopyOrMoveOperationDelegate> weak_factory_; 77 base::WeakPtrFactory<CopyOrMoveOperationDelegate> weak_factory_;
116 78
117 DISALLOW_COPY_AND_ASSIGN(CopyOrMoveOperationDelegate); 79 DISALLOW_COPY_AND_ASSIGN(CopyOrMoveOperationDelegate);
118 }; 80 };
119 81
120 } // namespace fileapi 82 } // namespace fileapi
121 83
122 #endif // WEBKIT_BROWSER_FILEAPI_COPY_OR_MOVE_OPERATION_DELEGATE_H_ 84 #endif // WEBKIT_BROWSER_FILEAPI_COPY_OR_MOVE_OPERATION_DELEGATE_H_
OLDNEW
« no previous file with comments | « no previous file | webkit/browser/fileapi/copy_or_move_operation_delegate.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698