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 STORAGE_BROWSER_FILEAPI_FILE_SYSTEM_QUOTA_UTIL_H_ 6 #define STORAGE_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 "storage/browser/storage_browser_export.h" 14 #include "storage/common/fileapi/file_system_types.h" 15 #include "url/gurl.h" 16 17 namespace base { 18 class SequencedTaskRunner; 19 } 20 21 namespace storage { 22 class QuotaManagerProxy; 23 } 24 25 namespace storage { 26 27 class FileSystemContext; 28 class QuotaReservation; 29 30 // An abstract interface that provides common quota-related utility functions 31 // for file_system_quota_client. 32 // All the methods of this class are synchronous and need to be called on 33 // the thread that the method name implies. 34 class STORAGE_EXPORT FileSystemQuotaUtil { 35 public: 36 virtual ~FileSystemQuotaUtil() {} 37 38 // Deletes the data on the origin and reports the amount of deleted data 39 // to the quota manager via |proxy|. 40 virtual base::File::Error DeleteOriginDataOnFileTaskRunner( 41 FileSystemContext* context, 42 storage::QuotaManagerProxy* proxy, 43 const GURL& origin_url, 44 FileSystemType type) = 0; 45 46 virtual void GetOriginsForTypeOnFileTaskRunner(storage::FileSystemType type, 47 std::set<GURL>* origins) = 0; 48 49 virtual void GetOriginsForHostOnFileTaskRunner(storage::FileSystemType type, 50 const std::string& host, 51 std::set<GURL>* origins) = 0; 52 53 // Returns the amount of data used for the origin for usage tracking. 54 virtual int64 GetOriginUsageOnFileTaskRunner( 55 storage::FileSystemContext* file_system_context, 56 const GURL& origin_url, 57 storage::FileSystemType type) = 0; 58 59 // Creates new reservation object for the origin and the type. 60 virtual scoped_refptr<QuotaReservation> 61 CreateQuotaReservationOnFileTaskRunner( 62 const GURL& origin_url, 63 FileSystemType type) = 0; 64 }; 65 66 } // namespace storage 67 68 #endif // STORAGE_BROWSER_FILEAPI_FILE_SYSTEM_QUOTA_UTIL_H_ 69