OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef WEBKIT_BROWSER_FILEAPI_SANDBOX_CONTEXT_H_ | 5 #ifndef WEBKIT_BROWSER_FILEAPI_SANDBOX_CONTEXT_H_ |
6 #define WEBKIT_BROWSER_FILEAPI_SANDBOX_CONTEXT_H_ | 6 #define WEBKIT_BROWSER_FILEAPI_SANDBOX_CONTEXT_H_ |
7 | 7 |
8 #include <set> | 8 #include <set> |
9 #include <string> | 9 #include <string> |
10 #include <utility> | 10 #include <utility> |
11 | 11 |
12 #include "base/files/file_path.h" | 12 #include "base/files/file_path.h" |
13 #include "base/memory/ref_counted.h" | 13 #include "base/memory/ref_counted.h" |
14 #include "base/memory/scoped_ptr.h" | 14 #include "base/memory/scoped_ptr.h" |
| 15 #include "base/memory/weak_ptr.h" |
| 16 #include "base/time/time.h" |
15 #include "webkit/browser/fileapi/file_system_backend.h" | 17 #include "webkit/browser/fileapi/file_system_backend.h" |
16 #include "webkit/browser/fileapi/file_system_options.h" | 18 #include "webkit/browser/fileapi/file_system_options.h" |
17 #include "webkit/browser/fileapi/file_system_quota_util.h" | 19 #include "webkit/browser/fileapi/file_system_quota_util.h" |
18 #include "webkit/browser/webkit_storage_browser_export.h" | 20 #include "webkit/browser/webkit_storage_browser_export.h" |
19 | 21 |
20 namespace base { | 22 namespace base { |
21 class SequencedTaskRunner; | 23 class SequencedTaskRunner; |
22 } | 24 } |
23 | 25 |
24 namespace quota { | 26 namespace quota { |
25 class QuotaManagerProxy; | 27 class QuotaManagerProxy; |
26 class SpecialStoragePolicy; | 28 class SpecialStoragePolicy; |
27 } | 29 } |
28 | 30 |
29 namespace fileapi { | 31 namespace fileapi { |
30 | 32 |
31 class AsyncFileUtilAdapter; | 33 class AsyncFileUtilAdapter; |
32 class FileSystemURL; | 34 class FileSystemURL; |
33 class FileSystemUsageCache; | 35 class FileSystemUsageCache; |
34 class ObfuscatedFileUtil; | 36 class ObfuscatedFileUtil; |
35 class SandboxFileSystemBackend; | 37 class SandboxFileSystemBackend; |
36 class SandboxFileSystemTestHelper; | 38 class SandboxFileSystemTestHelper; |
37 class SandboxQuotaObserver; | 39 class SandboxQuotaObserver; |
38 | 40 |
39 // This class keeps and provides a sandbox file system context. | 41 // This class keeps and provides a sandbox file system context. |
40 // An instance of this class is created and owned by FileSystemContext. | 42 // An instance of this class is created and owned by FileSystemContext. |
41 class WEBKIT_STORAGE_BROWSER_EXPORT SandboxContext { | 43 class WEBKIT_STORAGE_BROWSER_EXPORT SandboxContext { |
42 public: | 44 public: |
| 45 typedef FileSystemBackend::OpenFileSystemCallback OpenFileSystemCallback; |
| 46 |
43 // The FileSystem directory name. | 47 // The FileSystem directory name. |
44 static const base::FilePath::CharType kFileSystemDirectory[]; | 48 static const base::FilePath::CharType kFileSystemDirectory[]; |
45 | 49 |
46 // Origin enumerator interface. | 50 // Origin enumerator interface. |
47 // An instance of this interface is assumed to be called on the file thread. | 51 // An instance of this interface is assumed to be called on the file thread. |
48 class OriginEnumerator { | 52 class OriginEnumerator { |
49 public: | 53 public: |
50 virtual ~OriginEnumerator() {} | 54 virtual ~OriginEnumerator() {} |
51 | 55 |
52 // Returns the next origin. Returns empty if there are no more origins. | 56 // Returns the next origin. Returns empty if there are no more origins. |
(...skipping 28 matching lines...) Expand all Loading... |
81 // specified by |origin_url| and |type|. | 85 // specified by |origin_url| and |type|. |
82 // (The path is similar to the origin's root path but doesn't contain | 86 // (The path is similar to the origin's root path but doesn't contain |
83 // the 'unique' part.) | 87 // the 'unique' part.) |
84 // Returns an empty path if the given type is invalid. | 88 // Returns an empty path if the given type is invalid. |
85 // This method can only be called on the file thread. | 89 // This method can only be called on the file thread. |
86 base::FilePath GetBaseDirectoryForOriginAndType( | 90 base::FilePath GetBaseDirectoryForOriginAndType( |
87 const GURL& origin_url, | 91 const GURL& origin_url, |
88 FileSystemType type, | 92 FileSystemType type, |
89 bool create); | 93 bool create); |
90 | 94 |
| 95 // FileSystemBackend helpers. |
| 96 void OpenFileSystem( |
| 97 const GURL& origin_url, |
| 98 FileSystemType type, |
| 99 OpenFileSystemMode mode, |
| 100 const OpenFileSystemCallback& callback, |
| 101 const GURL& root_url); |
| 102 |
91 // FileSystemQuotaUtil helpers. | 103 // FileSystemQuotaUtil helpers. |
92 base::PlatformFileError DeleteOriginDataOnFileThread( | 104 base::PlatformFileError DeleteOriginDataOnFileThread( |
93 FileSystemContext* context, | 105 FileSystemContext* context, |
94 quota::QuotaManagerProxy* proxy, | 106 quota::QuotaManagerProxy* proxy, |
95 const GURL& origin_url, | 107 const GURL& origin_url, |
96 FileSystemType type); | 108 FileSystemType type); |
97 void GetOriginsForTypeOnFileThread( | 109 void GetOriginsForTypeOnFileThread( |
98 FileSystemType type, | 110 FileSystemType type, |
99 std::set<GURL>* origins); | 111 std::set<GURL>* origins); |
100 void GetOriginsForHostOnFileThread( | 112 void GetOriginsForHostOnFileThread( |
101 FileSystemType type, | 113 FileSystemType type, |
102 const std::string& host, | 114 const std::string& host, |
103 std::set<GURL>* origins); | 115 std::set<GURL>* origins); |
104 int64 GetOriginUsageOnFileThread( | 116 int64 GetOriginUsageOnFileThread( |
105 FileSystemContext* context, | 117 FileSystemContext* context, |
106 const GURL& origin_url, | 118 const GURL& origin_url, |
107 FileSystemType type); | 119 FileSystemType type); |
108 void InvalidateUsageCache( | 120 void InvalidateUsageCache( |
109 const GURL& origin_url, | 121 const GURL& origin_url, |
110 FileSystemType type); | 122 FileSystemType type); |
111 void StickyInvalidateUsageCache( | 123 void StickyInvalidateUsageCache( |
112 const GURL& origin_url, | 124 const GURL& origin_url, |
113 FileSystemType type); | 125 FileSystemType type); |
114 | 126 |
| 127 void CollectOpenFileSystemMetrics(base::PlatformFileError error_code); |
| 128 |
115 base::SequencedTaskRunner* file_task_runner() { | 129 base::SequencedTaskRunner* file_task_runner() { |
116 return file_task_runner_.get(); | 130 return file_task_runner_.get(); |
117 } | 131 } |
118 | 132 |
119 AsyncFileUtilAdapter* file_util() { return sandbox_file_util_.get(); } | 133 AsyncFileUtilAdapter* file_util() { return sandbox_file_util_.get(); } |
120 FileSystemUsageCache* usage_cache() { return file_system_usage_cache_.get(); } | 134 FileSystemUsageCache* usage_cache() { return file_system_usage_cache_.get(); } |
121 SandboxQuotaObserver* quota_observer() { return quota_observer_.get(); }; | 135 SandboxQuotaObserver* quota_observer() { return quota_observer_.get(); }; |
122 | 136 |
123 quota::SpecialStoragePolicy* special_storage_policy() { | 137 quota::SpecialStoragePolicy* special_storage_policy() { |
124 return special_storage_policy_.get(); | 138 return special_storage_policy_.get(); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
156 | 170 |
157 scoped_refptr<quota::SpecialStoragePolicy> special_storage_policy_; | 171 scoped_refptr<quota::SpecialStoragePolicy> special_storage_policy_; |
158 | 172 |
159 FileSystemOptions file_system_options_; | 173 FileSystemOptions file_system_options_; |
160 | 174 |
161 // Acccessed only on the file thread. | 175 // Acccessed only on the file thread. |
162 std::set<GURL> visited_origins_; | 176 std::set<GURL> visited_origins_; |
163 | 177 |
164 std::set<std::pair<GURL, FileSystemType> > sticky_dirty_origins_; | 178 std::set<std::pair<GURL, FileSystemType> > sticky_dirty_origins_; |
165 | 179 |
| 180 base::Time next_release_time_for_open_filesystem_stat_; |
| 181 |
| 182 base::WeakPtrFactory<SandboxContext> weak_factory_; |
| 183 |
166 DISALLOW_COPY_AND_ASSIGN(SandboxContext); | 184 DISALLOW_COPY_AND_ASSIGN(SandboxContext); |
167 }; | 185 }; |
168 | 186 |
169 } // namespace fileapi | 187 } // namespace fileapi |
170 | 188 |
171 #endif // WEBKIT_BROWSER_FILEAPI_SANDBOX_CONTEXT_H_ | 189 #endif // WEBKIT_BROWSER_FILEAPI_SANDBOX_CONTEXT_H_ |
OLD | NEW |