summaryrefslogtreecommitdiffstats
path: root/storage
diff options
context:
space:
mode:
authormtomasz <mtomasz@chromium.org>2014-10-30 22:53:49 -0700
committerCommit bot <commit-bot@chromium.org>2014-10-31 05:54:05 +0000
commit340ba2068e2171d80b347fc2ca340446b6c265ec (patch)
tree0bb8ee3d2b887efdf5f4a92d0513a2010b01d4ad /storage
parent55ef2cde8182e4307a50480aec7fc223e8c48a7f (diff)
downloadchromium_src-340ba2068e2171d80b347fc2ca340446b6c265ec.zip
chromium_src-340ba2068e2171d80b347fc2ca340446b6c265ec.tar.gz
chromium_src-340ba2068e2171d80b347fc2ca340446b6c265ec.tar.bz2
[fsp] Implement storage::WatcherManager for FSP.
This patch implements the storage::WatcherManager interface, which simply calls the Add/RemoveWatcher methods on ProvidedFileSystemInterface implementations. An additional callback has been added to AddWatcher, so it's easy to notify WatcherManager about changes. Without that, we would have to observe provided file system objects and store callbacks passed to WatcherManager::AddWatcher, which would make the code complex. Along the way the storage::WatcherManager interface has been refactored to have consistent naming with FSP watching methods. TEST=unit_tests: *ProvidedFileSystem* BUG=248427 Review URL: https://codereview.chromium.org/689603002 Cr-Commit-Position: refs/heads/master@{#302229}
Diffstat (limited to 'storage')
-rw-r--r--storage/browser/fileapi/watcher_manager.h32
1 files changed, 17 insertions, 15 deletions
diff --git a/storage/browser/fileapi/watcher_manager.h b/storage/browser/fileapi/watcher_manager.h
index 1c4f3d1..e38d207 100644
--- a/storage/browser/fileapi/watcher_manager.h
+++ b/storage/browser/fileapi/watcher_manager.h
@@ -11,10 +11,6 @@
#include "base/callback_forward.h"
#include "base/files/file.h"
-namespace base {
-class Time;
-}
-
namespace storage {
class FileSystemOperationContext;
@@ -27,28 +23,34 @@ class FileSystemURL;
// can assume that they don't get any null callbacks.
class WatcherManager {
public:
- enum Action { CHANGED, REMOVED };
+ enum ChangeType { CHANGED, DELETED };
typedef base::Callback<void(base::File::Error result)> StatusCallback;
- typedef base::Callback<void(Action action)> NotificationCallback;
+ typedef base::Callback<void(ChangeType change_type)> NotificationCallback;
virtual ~WatcherManager() {}
- // Observes a directory entry. If the |recursive| mode is not supported then
+ // Adds an entry watcher. If the |recursive| mode is not supported then
// FILE_ERROR_INVALID_OPERATION must be returned as an error. If the |url| is
- // already watched, or setting up the watcher fails, then |callback|
- // must be called with a specific error code. Otherwise |callback| must be
- // called with the FILE_OK error code. |notification_callback| is called for
- // every change related to the watched directory.
- virtual void WatchDirectory(
+ // already watched with the same |recursive|, or setting up the watcher fails,
+ // then |callback| must be called with a specific error code.
+ //
+ // There may be up to two watchers for the same |url| as well as one of them
+ // is recursive, and the other one is not.
+ //
+ // In case of a success |callback| must be called with the FILE_OK error code.
+ // |notification_callback| is called for every change related to the watched
+ // directory.
+ virtual void AddWatcher(
const FileSystemURL& url,
bool recursive,
const StatusCallback& callback,
const NotificationCallback& notification_callback) = 0;
- // Stops observing an entry represented by |url|.
- virtual void UnwatchEntry(const FileSystemURL& url,
- const StatusCallback& callback) = 0;
+ // Removes a watcher represented by |url| in |recursive| mode.
+ virtual void RemoveWatcher(const FileSystemURL& url,
+ bool recursive,
+ const StatusCallback& callback) = 0;
};
} // namespace storage