Include all dupe types (event when value is zero) in scan stats.
[chromium-blink-merge.git] / storage / browser / fileapi / file_observers.h
blob7a07193f2680be92d94441b8e98d5b354db0c923
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef STORAGE_BROWSER_FILEAPI_FILE_OBSERVERS_H_
6 #define STORAGE_BROWSER_FILEAPI_FILE_OBSERVERS_H_
8 #include "base/basictypes.h"
9 #include "storage/browser/storage_browser_export.h"
11 // TODO(kinuko): Split this file into per-observer multiple files.
13 namespace storage {
15 class FileSystemURL;
17 // An abstract interface to observe update operations.
19 // OnStartUpdate and OnEndUpdate are called once for each target url
20 // before and after following operations regardless of whether the operation
21 // is made recursively or not (i.e. StartUpdate() will be called only once
22 // for destination url regardless of whether it is recursive copy or not):
23 // CreateFile(), CreateDirectory(),
24 // Copy() (destination only),
25 // Move() (both for source and destination),
26 // Remove(), Write(), Truncate(), TouchFile()
28 // OnUpdate() is called each time the |url| is updated but works only for
29 // sandboxed files (where usage is tracked).
30 class STORAGE_EXPORT FileUpdateObserver {
31 public:
32 FileUpdateObserver() {}
33 virtual ~FileUpdateObserver() {}
35 virtual void OnStartUpdate(const FileSystemURL& url) = 0;
36 virtual void OnUpdate(const FileSystemURL& url, int64 delta) = 0;
37 virtual void OnEndUpdate(const FileSystemURL& url) = 0;
39 private:
40 DISALLOW_COPY_AND_ASSIGN(FileUpdateObserver);
43 // An abstract interface to observe file access.
44 // OnAccess is called whenever an operation reads file contents or metadata.
45 // (It is called only once per operation regardless of whether the operation
46 // is recursive or not)
47 class STORAGE_EXPORT FileAccessObserver {
48 public:
49 FileAccessObserver() {}
50 virtual ~FileAccessObserver() {}
52 virtual void OnAccess(const FileSystemURL& url) = 0;
54 private:
55 DISALLOW_COPY_AND_ASSIGN(FileAccessObserver);
58 // An abstract interface to observe file changes.
59 // Each method of this class is called once per file/directory is created,
60 // removed or modified. For recursive operations each method is called for
61 // each subdirectory/subfile. Currently ChangeObserver is only supported
62 // by the local sandbox file system.
63 class STORAGE_EXPORT FileChangeObserver {
64 public:
65 FileChangeObserver() {}
66 virtual ~FileChangeObserver() {}
68 virtual void OnCreateFile(const FileSystemURL& url) = 0;
69 virtual void OnCreateFileFrom(const FileSystemURL& url,
70 const FileSystemURL& src) = 0;
71 virtual void OnRemoveFile(const FileSystemURL& url) = 0;
72 virtual void OnModifyFile(const FileSystemURL& url) = 0;
74 virtual void OnCreateDirectory(const FileSystemURL& url) = 0;
75 virtual void OnRemoveDirectory(const FileSystemURL& url) = 0;
77 private:
78 DISALLOW_COPY_AND_ASSIGN(FileChangeObserver);
81 } // namespace storage
83 #endif // STORAGE_BROWSER_FILEAPI_FILE_OBSERVERS_H_