diff options
author | mtomasz <mtomasz@chromium.org> | 2014-10-30 22:53:49 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-10-31 05:54:05 +0000 |
commit | 340ba2068e2171d80b347fc2ca340446b6c265ec (patch) | |
tree | 0bb8ee3d2b887efdf5f4a92d0513a2010b01d4ad /storage | |
parent | 55ef2cde8182e4307a50480aec7fc223e8c48a7f (diff) | |
download | chromium_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.h | 32 |
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 |