- add sources.
[platform/framework/web/crosswalk.git] / src / webkit / browser / fileapi / file_observers.h
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.
4
5 #ifndef WEBKIT_BROWSER_FILEAPI_FILE_OBSERVERS_H_
6 #define WEBKIT_BROWSER_FILEAPI_FILE_OBSERVERS_H_
7
8 #include "base/basictypes.h"
9 #include "webkit/browser/webkit_storage_browser_export.h"
10
11 // TODO(kinuko): Split this file into per-observer multiple files.
12
13 namespace fileapi {
14
15 class FileSystemURL;
16
17 // An abstract interface to observe update operations.
18 //
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()
27 //
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_BROWSER_EXPORT FileUpdateObserver {
31  public:
32   FileUpdateObserver() {}
33   virtual ~FileUpdateObserver() {}
34
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;
38
39  private:
40   DISALLOW_COPY_AND_ASSIGN(FileUpdateObserver);
41 };
42
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_BROWSER_EXPORT FileAccessObserver {
48  public:
49   FileAccessObserver() {}
50   virtual ~FileAccessObserver() {}
51
52   virtual void OnAccess(const FileSystemURL& url) = 0;
53
54  private:
55   DISALLOW_COPY_AND_ASSIGN(FileAccessObserver);
56 };
57
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_BROWSER_EXPORT FileChangeObserver {
64  public:
65   FileChangeObserver() {}
66   virtual ~FileChangeObserver() {}
67
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;
73
74   virtual void OnCreateDirectory(const FileSystemURL& url) = 0;
75   virtual void OnRemoveDirectory(const FileSystemURL& url) = 0;
76
77  private:
78   DISALLOW_COPY_AND_ASSIGN(FileChangeObserver);
79 };
80
81 }  // namespace fileapi
82
83 #endif  // WEBKIT_BROWSER_FILEAPI_FILE_OBSERVERS_H_