Home | History | Annotate | Download | only in fileapi
      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_
     84