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

Unified Diff: webkit/browser/fileapi/recursive_operation_delegate.h

Issue 539143002: Migrate webkit/browser/ to storage/browser/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 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 side-by-side diff with in-line comments
Download patch
Index: webkit/browser/fileapi/recursive_operation_delegate.h
diff --git a/webkit/browser/fileapi/recursive_operation_delegate.h b/webkit/browser/fileapi/recursive_operation_delegate.h
index 638663243b4e7a84276ae84531bbe11a4a8ed88a..b1fbd66550458a810c6bbc08f42fb7f9b2cc03bc 100644
--- a/webkit/browser/fileapi/recursive_operation_delegate.h
+++ b/webkit/browser/fileapi/recursive_operation_delegate.h
@@ -1,152 +1,5 @@
-// Copyright (c) 2013 The Chromium Authors. All rights reserved.
+// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef WEBKIT_BROWSER_FILEAPI_RECURSIVE_OPERATION_DELEGATE_H_
-#define WEBKIT_BROWSER_FILEAPI_RECURSIVE_OPERATION_DELEGATE_H_
-
-#include <queue>
-#include <stack>
-
-#include "base/basictypes.h"
-#include "base/callback.h"
-#include "base/memory/weak_ptr.h"
-#include "webkit/browser/fileapi/file_system_operation.h"
-#include "webkit/browser/fileapi/file_system_url.h"
-
-namespace storage {
-
-class FileSystemContext;
-class FileSystemOperationRunner;
-
-// A base class for recursive operation delegates.
-//
-// In short, each subclass should override ProcessFile and ProcessDirectory
-// to process a directory or a file. To start the recursive operation it
-// should also call StartRecursiveOperation.
-class STORAGE_EXPORT RecursiveOperationDelegate
- : public base::SupportsWeakPtr<RecursiveOperationDelegate> {
- public:
- typedef FileSystemOperation::StatusCallback StatusCallback;
- typedef FileSystemOperation::FileEntryList FileEntryList;
-
- virtual ~RecursiveOperationDelegate();
-
- // This is called when the consumer of this instance starts a non-recursive
- // operation.
- virtual void Run() = 0;
-
- // This is called when the consumer of this instance starts a recursive
- // operation.
- virtual void RunRecursively() = 0;
-
- // This is called each time a file is found while recursively
- // performing an operation.
- virtual void ProcessFile(const FileSystemURL& url,
- const StatusCallback& callback) = 0;
-
- // This is called each time a directory is found while recursively
- // performing an operation.
- virtual void ProcessDirectory(const FileSystemURL& url,
- const StatusCallback& callback) = 0;
-
-
- // This is called each time after files and subdirectories for a
- // directory is processed while recursively performing an operation.
- virtual void PostProcessDirectory(const FileSystemURL& url,
- const StatusCallback& callback) = 0;
-
- // Cancels the currently running operation.
- void Cancel();
-
- protected:
- explicit RecursiveOperationDelegate(FileSystemContext* file_system_context);
-
- // Starts to process files/directories recursively from the given |root|.
- // This will call ProcessFile and ProcessDirectory on each file or directory.
- //
- // First, this tries to call ProcessFile with |root| regardless whether it is
- // actually a file or a directory. If it is a directory, ProcessFile should
- // return File::FILE_NOT_A_FILE.
- //
- // For each directory, the recursive operation works as follows:
- // ProcessDirectory is called first for the directory.
- // Then the directory contents are read (to obtain its sub directories and
- // files in it).
- // ProcessFile is called for found files. This may run in parallel.
- // The same step is recursively applied to each subdirectory.
- // After all files and subdirectories in a directory are processed,
- // PostProcessDirectory is called for the directory.
- // Here is an example;
- // a_dir/ -+- b1_dir/ -+- c1_dir/ -+- d1_file
- // | | |
- // | +- c2_file +- d2_file
- // |
- // +- b2_dir/ --- e_dir/
- // |
- // +- b3_file
- // |
- // +- b4_file
- // Then traverse order is:
- // ProcessFile(a_dir) (This should return File::FILE_NOT_A_FILE).
- // ProcessDirectory(a_dir).
- // ProcessFile(b3_file), ProcessFile(b4_file). (in parallel).
- // ProcessDirectory(b1_dir).
- // ProcessFile(c2_file)
- // ProcessDirectory(c1_dir).
- // ProcessFile(d1_file), ProcessFile(d2_file). (in parallel).
- // PostProcessDirectory(c1_dir)
- // PostProcessDirectory(b1_dir).
- // ProcessDirectory(b2_dir)
- // ProcessDirectory(e_dir)
- // PostProcessDirectory(e_dir)
- // PostProcessDirectory(b2_dir)
- // PostProcessDirectory(a_dir)
- //
- // |callback| is fired with base::File::FILE_OK when every file/directory
- // under |root| is processed, or fired earlier when any suboperation fails.
- void StartRecursiveOperation(const FileSystemURL& root,
- const StatusCallback& callback);
-
- FileSystemContext* file_system_context() { return file_system_context_; }
- const FileSystemContext* file_system_context() const {
- return file_system_context_;
- }
-
- FileSystemOperationRunner* operation_runner();
-
- // Called when Cancel() is called. This is a hook to do something more
- // in a derived class. By default, do nothing.
- virtual void OnCancel();
-
- private:
- void DidTryProcessFile(const FileSystemURL& root,
- base::File::Error error);
- void ProcessNextDirectory();
- void DidProcessDirectory(base::File::Error error);
- void DidReadDirectory(const FileSystemURL& parent,
- base::File::Error error,
- const FileEntryList& entries,
- bool has_more);
- void ProcessPendingFiles();
- void DidProcessFile(base::File::Error error);
- void ProcessSubDirectory();
- void DidPostProcessDirectory(base::File::Error error);
-
- // Called when all recursive operation is done (or an error occurs).
- void Done(base::File::Error error);
-
- FileSystemContext* file_system_context_;
- StatusCallback callback_;
- std::stack<FileSystemURL> pending_directories_;
- std::stack<std::queue<FileSystemURL> > pending_directory_stack_;
- std::queue<FileSystemURL> pending_files_;
- int inflight_operations_;
- bool canceled_;
-
- DISALLOW_COPY_AND_ASSIGN(RecursiveOperationDelegate);
-};
-
-} // namespace storage
-
-#endif // WEBKIT_BROWSER_FILEAPI_RECURSIVE_OPERATION_DELEGATE_H_
+#include "storage/browser/fileapi/recursive_operation_delegate.h"

Powered by Google App Engine
This is Rietveld 408576698