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/files/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::File::Error DeleteOriginDataOnFileTaskRunner(
     42       FileSystemContext* context,
     43       quota::QuotaManagerProxy* proxy,
     44       const GURL& origin_url,
     45       FileSystemType type) = 0;
     46 
     47   virtual void GetOriginsForTypeOnFileTaskRunner(
     48       fileapi::FileSystemType type,
     49       std::set<GURL>* origins) = 0;
     50 
     51   virtual void GetOriginsForHostOnFileTaskRunner(
     52       fileapi::FileSystemType type,
     53       const std::string& host,
     54       std::set<GURL>* origins) = 0;
     55 
     56   // Returns the amount of data used for the origin for usage tracking.
     57   virtual int64 GetOriginUsageOnFileTaskRunner(
     58       fileapi::FileSystemContext* file_system_context,
     59       const GURL& origin_url,
     60       fileapi::FileSystemType type) = 0;
     61 
     62   // Creates new reservation object for the origin and the type.
     63   virtual scoped_refptr<QuotaReservation>
     64       CreateQuotaReservationOnFileTaskRunner(
     65           const GURL& origin_url,
     66           FileSystemType type) = 0;
     67 
     68   virtual void AddFileUpdateObserver(
     69       FileSystemType type,
     70       FileUpdateObserver* observer,
     71       base::SequencedTaskRunner* task_runner) = 0;
     72   virtual void AddFileChangeObserver(
     73       FileSystemType type,
     74       FileChangeObserver* observer,
     75       base::SequencedTaskRunner* task_runner) = 0;
     76   virtual void AddFileAccessObserver(
     77       FileSystemType type,
     78       FileAccessObserver* observer,
     79       base::SequencedTaskRunner* task_runner) = 0;
     80 
     81   // Returns the observer list for |type|, or returns NULL if any observers
     82   // have not been registered on |type|.
     83   virtual const UpdateObserverList* GetUpdateObservers(
     84       FileSystemType type) const = 0;
     85   virtual const ChangeObserverList* GetChangeObservers(
     86       FileSystemType type) const = 0;
     87   virtual const AccessObserverList* GetAccessObservers(
     88       FileSystemType type) const = 0;
     89 };
     90 
     91 }  // namespace fileapi
     92 
     93 #endif  // WEBKIT_BROWSER_FILEAPI_FILE_SYSTEM_QUOTA_UTIL_H_
     94