Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11)

Side by Side Diff: content/public/test/test_file_system_backend.cc

Issue 2815743002: Move a couple of blob tests next to the files they cover. (Closed)
Patch Set: Fix gn check, take 2. Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "content/public/test/test_file_system_backend.h"
6
7 #include <set>
8 #include <string>
9 #include <utility>
10 #include <vector>
11
12 #include "base/files/file.h"
13 #include "base/files/file_util.h"
14 #include "base/macros.h"
15 #include "base/memory/weak_ptr.h"
16 #include "base/observer_list.h"
17 #include "base/sequenced_task_runner.h"
18 #include "base/threading/thread_task_runner_handle.h"
19 #include "storage/browser/fileapi/copy_or_move_file_validator.h"
20 #include "storage/browser/fileapi/file_observers.h"
21 #include "storage/browser/fileapi/file_stream_reader.h"
22 #include "storage/browser/fileapi/file_system_operation.h"
23 #include "storage/browser/fileapi/file_system_operation_context.h"
24 #include "storage/browser/fileapi/file_system_quota_util.h"
25 #include "storage/browser/fileapi/local_file_util.h"
26 #include "storage/browser/fileapi/native_file_util.h"
27 #include "storage/browser/fileapi/quota/quota_reservation.h"
28 #include "storage/browser/fileapi/sandbox_file_stream_writer.h"
29 #include "storage/browser/quota/quota_manager.h"
30 #include "storage/common/fileapi/file_system_util.h"
31
32 using storage::FileSystemContext;
33 using storage::FileSystemOperation;
34 using storage::FileSystemOperationContext;
35 using storage::FileSystemURL;
36
37 namespace content {
38
39 namespace {
40
41 // Stub implementation of storage::LocalFileUtil.
42 class TestFileUtil : public storage::LocalFileUtil {
43 public:
44 explicit TestFileUtil(const base::FilePath& base_path)
45 : base_path_(base_path) {}
46 ~TestFileUtil() override {}
47
48 // LocalFileUtil overrides.
49 base::File::Error GetLocalFilePath(FileSystemOperationContext* context,
50 const FileSystemURL& file_system_url,
51 base::FilePath* local_file_path) override {
52 *local_file_path = base_path_.Append(file_system_url.path());
53 return base::File::FILE_OK;
54 }
55
56 private:
57 base::FilePath base_path_;
58 };
59
60 } // namespace
61
62 // This only supports single origin.
63 class TestFileSystemBackend::QuotaUtil : public storage::FileSystemQuotaUtil,
64 public storage::FileUpdateObserver {
65 public:
66 QuotaUtil() : usage_(0) {}
67 ~QuotaUtil() override {}
68
69 // FileSystemQuotaUtil overrides.
70 base::File::Error DeleteOriginDataOnFileTaskRunner(
71 FileSystemContext* context,
72 storage::QuotaManagerProxy* proxy,
73 const GURL& origin_url,
74 storage::FileSystemType type) override {
75 NOTREACHED();
76 return base::File::FILE_OK;
77 }
78
79 scoped_refptr<storage::QuotaReservation>
80 CreateQuotaReservationOnFileTaskRunner(
81 const GURL& origin_url,
82 storage::FileSystemType type) override {
83 NOTREACHED();
84 return scoped_refptr<storage::QuotaReservation>();
85 }
86
87 void GetOriginsForTypeOnFileTaskRunner(storage::FileSystemType type,
88 std::set<GURL>* origins) override {
89 NOTREACHED();
90 }
91
92 void GetOriginsForHostOnFileTaskRunner(storage::FileSystemType type,
93 const std::string& host,
94 std::set<GURL>* origins) override {
95 NOTREACHED();
96 }
97
98 int64_t GetOriginUsageOnFileTaskRunner(
99 FileSystemContext* context,
100 const GURL& origin_url,
101 storage::FileSystemType type) override {
102 return usage_;
103 }
104
105 // FileUpdateObserver overrides.
106 void OnStartUpdate(const FileSystemURL& url) override {}
107 void OnUpdate(const FileSystemURL& url, int64_t delta) override {
108 usage_ += delta;
109 }
110 void OnEndUpdate(const FileSystemURL& url) override {}
111
112 private:
113 int64_t usage_;
114 DISALLOW_COPY_AND_ASSIGN(QuotaUtil);
115 };
116
117 TestFileSystemBackend::TestFileSystemBackend(
118 base::SequencedTaskRunner* task_runner,
119 const base::FilePath& base_path)
120 : base_path_(base_path),
121 task_runner_(task_runner),
122 file_util_(
123 new storage::AsyncFileUtilAdapter(new TestFileUtil(base_path))),
124 quota_util_(new QuotaUtil),
125 require_copy_or_move_validator_(false) {
126 update_observers_ =
127 update_observers_.AddObserver(quota_util_.get(), task_runner_.get());
128 }
129
130 TestFileSystemBackend::~TestFileSystemBackend() {
131 }
132
133 bool TestFileSystemBackend::CanHandleType(storage::FileSystemType type) const {
134 return (type == storage::kFileSystemTypeTest);
135 }
136
137 void TestFileSystemBackend::Initialize(FileSystemContext* context) {
138 }
139
140 void TestFileSystemBackend::ResolveURL(const FileSystemURL& url,
141 storage::OpenFileSystemMode mode,
142 const OpenFileSystemCallback& callback) {
143 callback.Run(GetFileSystemRootURI(url.origin(), url.type()),
144 GetFileSystemName(url.origin(), url.type()),
145 base::File::FILE_OK);
146 }
147
148 storage::AsyncFileUtil* TestFileSystemBackend::GetAsyncFileUtil(
149 storage::FileSystemType type) {
150 return file_util_.get();
151 }
152
153 storage::WatcherManager* TestFileSystemBackend::GetWatcherManager(
154 storage::FileSystemType type) {
155 return nullptr;
156 }
157
158 storage::CopyOrMoveFileValidatorFactory*
159 TestFileSystemBackend::GetCopyOrMoveFileValidatorFactory(
160 storage::FileSystemType type,
161 base::File::Error* error_code) {
162 DCHECK(error_code);
163 *error_code = base::File::FILE_OK;
164 if (require_copy_or_move_validator_) {
165 if (!copy_or_move_file_validator_factory_)
166 *error_code = base::File::FILE_ERROR_SECURITY;
167 return copy_or_move_file_validator_factory_.get();
168 }
169 return nullptr;
170 }
171
172 void TestFileSystemBackend::InitializeCopyOrMoveFileValidatorFactory(
173 std::unique_ptr<storage::CopyOrMoveFileValidatorFactory> factory) {
174 if (!copy_or_move_file_validator_factory_)
175 copy_or_move_file_validator_factory_ = std::move(factory);
176 }
177
178 FileSystemOperation* TestFileSystemBackend::CreateFileSystemOperation(
179 const FileSystemURL& url,
180 FileSystemContext* context,
181 base::File::Error* error_code) const {
182 std::unique_ptr<FileSystemOperationContext> operation_context(
183 new FileSystemOperationContext(context));
184 operation_context->set_update_observers(*GetUpdateObservers(url.type()));
185 operation_context->set_change_observers(*GetChangeObservers(url.type()));
186 return FileSystemOperation::Create(url, context,
187 std::move(operation_context));
188 }
189
190 bool TestFileSystemBackend::SupportsStreaming(
191 const storage::FileSystemURL& url) const {
192 return false;
193 }
194
195 bool TestFileSystemBackend::HasInplaceCopyImplementation(
196 storage::FileSystemType type) const {
197 return true;
198 }
199
200 std::unique_ptr<storage::FileStreamReader>
201 TestFileSystemBackend::CreateFileStreamReader(
202 const FileSystemURL& url,
203 int64_t offset,
204 int64_t max_bytes_to_read,
205 const base::Time& expected_modification_time,
206 FileSystemContext* context) const {
207 return std::unique_ptr<storage::FileStreamReader>(
208 storage::FileStreamReader::CreateForFileSystemFile(
209 context, url, offset, expected_modification_time));
210 }
211
212 std::unique_ptr<storage::FileStreamWriter>
213 TestFileSystemBackend::CreateFileStreamWriter(
214 const FileSystemURL& url,
215 int64_t offset,
216 FileSystemContext* context) const {
217 return std::unique_ptr<storage::FileStreamWriter>(
218 new storage::SandboxFileStreamWriter(context, url, offset,
219 *GetUpdateObservers(url.type())));
220 }
221
222 storage::FileSystemQuotaUtil* TestFileSystemBackend::GetQuotaUtil() {
223 return quota_util_.get();
224 }
225
226 const storage::UpdateObserverList* TestFileSystemBackend::GetUpdateObservers(
227 storage::FileSystemType type) const {
228 return &update_observers_;
229 }
230
231 const storage::ChangeObserverList* TestFileSystemBackend::GetChangeObservers(
232 storage::FileSystemType type) const {
233 return &change_observers_;
234 }
235
236 const storage::AccessObserverList* TestFileSystemBackend::GetAccessObservers(
237 storage::FileSystemType type) const {
238 return nullptr;
239 }
240
241 void TestFileSystemBackend::AddFileChangeObserver(
242 storage::FileChangeObserver* observer) {
243 change_observers_ =
244 change_observers_.AddObserver(observer, task_runner_.get());
245 }
246
247 } // namespace content
OLDNEW
« no previous file with comments | « content/public/test/test_file_system_backend.h ('k') | content/public/test/test_file_system_context.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698