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 WEBKIT_FILEAPI_FILE_OBSERVERS_H_
6 #define WEBKIT_FILEAPI_FILE_OBSERVERS_H_
8 #include "base/basictypes.h"
9 #include "webkit/storage/webkit_storage_export.h"
11 // TODO(kinuko): Split this file into per-observer multiple files.
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 WEBKIT_STORAGE_EXPORT FileUpdateObserver
{
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;
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 WEBKIT_STORAGE_EXPORT FileAccessObserver
{
49 FileAccessObserver() {}
50 virtual ~FileAccessObserver() {}
52 virtual void OnAccess(const FileSystemURL
& url
) = 0;
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 WEBKIT_STORAGE_EXPORT FileChangeObserver
{
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;
78 DISALLOW_COPY_AND_ASSIGN(FileChangeObserver
);
81 } // namespace fileapi
83 #endif // WEBKIT_FILEAPI_FILE_OBSERVERS_H_