Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / storage / browser / fileapi / file_system_quota_util.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 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_