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_SYSTEM_QUOTA_UTIL_H_
      6 #define WEBKIT_BROWSER_FILEAPI_FILE_SYSTEM_QUOTA_UTIL_H_
      7 
      8 #include <set>
      9 #include <string>
     10 
     11 #include "base/basictypes.h"
     12 #include "base/platform_file.h"
     13 #include "url/gurl.h"
     14 #include "webkit/browser/fileapi/task_runner_bound_observer_list.h"
     15 #include "webkit/browser/webkit_storage_browser_export.h"
     16 #include "webkit/common/fileapi/file_system_types.h"
     17 
     18 namespace base {
     19 class SequencedTaskRunner;
     20 }
     21 
     22 namespace quota {
     23 class QuotaManagerProxy;
     24 }
     25 
     26 namespace fileapi {
     27 
     28 class FileSystemContext;
     29 class QuotaReservation;
     30 
     31 // An abstract interface that provides common quota-related utility functions
     32 // for file_system_quota_client.
     33 // All the methods of this class are synchronous and need to be called on
     34 // the thread that the method name implies.
     35 class WEBKIT_STORAGE_BROWSER_EXPORT FileSystemQuotaUtil {
     36  public:
     37   virtual ~FileSystemQuotaUtil() {}
     38 
     39   // Deletes the data on the origin and reports the amount of deleted data
     40   // to the quota manager via |proxy|.
     41   virtual base::PlatformFileError DeleteOriginDataOnFileThread(
     42       FileSystemContext* context,
     43       quota::QuotaManagerProxy* proxy,
     44       const GURL& origin_url,
     45       FileSystemType type) = 0;
     46 
     47   virtual void GetOriginsForTypeOnFileThread(fileapi::FileSystemType type,
     48                                              std::set<GURL>* origins) = 0;
     49 
     50   virtual void GetOriginsForHostOnFileThread(fileapi::FileSystemType type,
     51                                              const std::string& host,
     52                                              std::set<GURL>* origins) = 0;
     53 
     54   // Returns the amount of data used for the origin for usage tracking.
     55   virtual int64 GetOriginUsageOnFileThread(
     56       fileapi::FileSystemContext* file_system_context,
     57       const GURL& origin_url,
     58       fileapi::FileSystemType type) = 0;
     59 
     60   // Creates new reservation object for the origin and the type.
     61   virtual scoped_refptr<QuotaReservation>
     62       CreateQuotaReservationOnFileTaskRunner(
     63           const GURL& origin_url,
     64           FileSystemType type) = 0;
     65 
     66   virtual void AddFileUpdateObserver(
     67       FileSystemType type,
     68       FileUpdateObserver* observer,
     69       base::SequencedTaskRunner* task_runner) = 0;
     70   virtual void AddFileChangeObserver(
     71       FileSystemType type,
     72       FileChangeObserver* observer,
     73       base::SequencedTaskRunner* task_runner) = 0;
     74   virtual void AddFileAccessObserver(
     75       FileSystemType type,
     76       FileAccessObserver* observer,
     77       base::SequencedTaskRunner* task_runner) = 0;
     78 
     79   // Returns the observer list for |type|, or returns NULL if any observers
     80   // have not been registered on |type|.
     81   virtual const UpdateObserverList* GetUpdateObservers(
     82       FileSystemType type) const = 0;
     83   virtual const ChangeObserverList* GetChangeObservers(
     84       FileSystemType type) const = 0;
     85   virtual const AccessObserverList* GetAccessObservers(
     86       FileSystemType type) const = 0;
     87 };
     88 
     89 }  // namespace fileapi
     90 
     91 #endif  // WEBKIT_BROWSER_FILEAPI_FILE_SYSTEM_QUOTA_UTIL_H_
     92