| // Copyright 2012 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef STORAGE_BROWSER_FILE_SYSTEM_FILE_OBSERVERS_H_ |
| #define STORAGE_BROWSER_FILE_SYSTEM_FILE_OBSERVERS_H_ |
| |
| #include <stdint.h> |
| |
| #include "base/component_export.h" |
| |
| // TODO(kinuko): Split this file into per-observer multiple files. |
| |
| namespace storage { |
| |
| class FileSystemURL; |
| |
| // An abstract interface to observe update operations. |
| // |
| // OnStartUpdate and OnEndUpdate are called once for each target url |
| // before and after following operations regardless of whether the operation |
| // is made recursively or not (i.e. StartUpdate() will be called only once |
| // for destination url regardless of whether it is recursive copy or not): |
| // CreateFile(), CreateDirectory(), |
| // Copy() (destination only), |
| // Move() (both for source and destination), |
| // Remove(), Write(), Truncate(), TouchFile() |
| // |
| // OnUpdate() is called each time the |url| is updated but works only for |
| // sandboxed files (where usage is tracked). |
| class COMPONENT_EXPORT(STORAGE_BROWSER) FileUpdateObserver { |
| public: |
| FileUpdateObserver() = default; |
| FileUpdateObserver(const FileUpdateObserver&) = delete; |
| FileUpdateObserver& operator=(const FileUpdateObserver&) = delete; |
| virtual ~FileUpdateObserver() = default; |
| |
| virtual void OnStartUpdate(const FileSystemURL& url) = 0; |
| virtual void OnUpdate(const FileSystemURL& url, int64_t delta) = 0; |
| virtual void OnEndUpdate(const FileSystemURL& url) = 0; |
| }; |
| |
| // An abstract interface to observe file access. |
| // OnAccess is called whenever an operation reads file contents or metadata. |
| // (It is called only once per operation regardless of whether the operation |
| // is recursive or not) |
| class COMPONENT_EXPORT(STORAGE_BROWSER) FileAccessObserver { |
| public: |
| FileAccessObserver() = default; |
| FileAccessObserver(const FileAccessObserver&) = delete; |
| FileAccessObserver& operator=(const FileAccessObserver&) = delete; |
| virtual ~FileAccessObserver() = default; |
| |
| virtual void OnAccess(const FileSystemURL& url) = 0; |
| }; |
| |
| // An abstract interface to observe file changes. |
| // Each method of this class is called once per file/directory is created, |
| // removed or modified. For recursive operations each method is called for |
| // each subdirectory/subfile. Currently ChangeObserver is only supported |
| // by the local sandbox file system. |
| class COMPONENT_EXPORT(STORAGE_BROWSER) FileChangeObserver { |
| public: |
| FileChangeObserver() = default; |
| FileChangeObserver(const FileChangeObserver&) = delete; |
| FileChangeObserver& operator=(const FileChangeObserver&) = delete; |
| virtual ~FileChangeObserver() = default; |
| |
| virtual void OnCreateFile(const FileSystemURL& url) = 0; |
| // File copy |
| virtual void OnCreateFileFrom(const FileSystemURL& url, |
| const FileSystemURL& src) = 0; |
| // File move |
| virtual void OnMoveFileFrom(const FileSystemURL& url, |
| const FileSystemURL& src) = 0; |
| virtual void OnRemoveFile(const FileSystemURL& url) = 0; |
| virtual void OnModifyFile(const FileSystemURL& url) = 0; |
| virtual void OnCreateDirectory(const FileSystemURL& url) = 0; |
| virtual void OnRemoveDirectory(const FileSystemURL& url) = 0; |
| }; |
| |
| } // namespace storage |
| |
| #endif // STORAGE_BROWSER_FILE_SYSTEM_FILE_OBSERVERS_H_ |