OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 #include "chrome/browser/chromeos/file_system_provider/fake_provided_file_system
.h" | 5 #include "chrome/browser/chromeos/file_system_provider/fake_provided_file_system
.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/files/file.h" | 9 #include "base/files/file.h" |
10 #include "base/message_loop/message_loop_proxy.h" | 10 #include "base/message_loop/message_loop_proxy.h" |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
141 callback, base::File::FILE_OK, entry_list, false /* has_more */)); | 141 callback, base::File::FILE_OK, entry_list, false /* has_more */)); |
142 } | 142 } |
143 } | 143 } |
144 | 144 |
145 void FakeProvidedFileSystem::OpenFile(const base::FilePath& file_path, | 145 void FakeProvidedFileSystem::OpenFile(const base::FilePath& file_path, |
146 OpenFileMode mode, | 146 OpenFileMode mode, |
147 bool create, | 147 bool create, |
148 const OpenFileCallback& callback) { | 148 const OpenFileCallback& callback) { |
149 if (file_path.AsUTF8Unsafe() != "/hello.txt" || | 149 if (file_path.AsUTF8Unsafe() != "/hello.txt" || |
150 mode == OPEN_FILE_MODE_WRITE || create) { | 150 mode == OPEN_FILE_MODE_WRITE || create) { |
151 callback.Run(0 /* file_handle */, base::File::FILE_ERROR_SECURITY); | 151 base::MessageLoopProxy::current()->PostTask( |
| 152 FROM_HERE, |
| 153 base::Bind( |
| 154 callback, 0 /* file_handle */, base::File::FILE_ERROR_SECURITY)); |
152 return; | 155 return; |
153 } | 156 } |
154 | 157 |
155 const int file_handle = ++last_file_handle_; | 158 const int file_handle = ++last_file_handle_; |
156 opened_files_[file_handle] = file_path; | 159 opened_files_[file_handle] = file_path; |
157 callback.Run(file_handle, base::File::FILE_OK); | 160 base::MessageLoopProxy::current()->PostTask( |
| 161 FROM_HERE, base::Bind(callback, file_handle, base::File::FILE_OK)); |
158 } | 162 } |
159 | 163 |
160 void FakeProvidedFileSystem::CloseFile( | 164 void FakeProvidedFileSystem::CloseFile( |
161 int file_handle, | 165 int file_handle, |
162 const fileapi::AsyncFileUtil::StatusCallback& callback) { | 166 const fileapi::AsyncFileUtil::StatusCallback& callback) { |
163 const OpenedFilesMap::iterator opened_file_it = | 167 const OpenedFilesMap::iterator opened_file_it = |
164 opened_files_.find(file_handle); | 168 opened_files_.find(file_handle); |
165 if (opened_file_it == opened_files_.end()) { | 169 if (opened_file_it == opened_files_.end()) { |
166 base::MessageLoopProxy::current()->PostTask( | 170 base::MessageLoopProxy::current()->PostTask( |
167 FROM_HERE, base::Bind(callback, base::File::FILE_ERROR_NOT_FOUND)); | 171 FROM_HERE, base::Bind(callback, base::File::FILE_ERROR_NOT_FOUND)); |
(...skipping 21 matching lines...) Expand all Loading... |
189 0 /* chunk_length */, | 193 0 /* chunk_length */, |
190 false /* has_next */, | 194 false /* has_next */, |
191 base::File::FILE_ERROR_SECURITY)); | 195 base::File::FILE_ERROR_SECURITY)); |
192 return; | 196 return; |
193 } | 197 } |
194 | 198 |
195 // Send the response byte by byte. | 199 // Send the response byte by byte. |
196 size_t current_offset = static_cast<size_t>(offset); | 200 size_t current_offset = static_cast<size_t>(offset); |
197 size_t current_length = static_cast<size_t>(length); | 201 size_t current_length = static_cast<size_t>(length); |
198 | 202 |
199 // Reading behind EOF, is fine, it will just read 0 bytes. | 203 // Reading behind EOF is fine, it will just return 0 bytes. |
200 if (current_offset > kFakeFileSize || !current_length) { | 204 if (current_offset >= kFakeFileSize || !current_length) { |
201 base::MessageLoopProxy::current()->PostTask( | 205 base::MessageLoopProxy::current()->PostTask( |
202 FROM_HERE, | 206 FROM_HERE, |
203 base::Bind(callback, | 207 base::Bind(callback, |
204 0 /* chunk_length */, | 208 0 /* chunk_length */, |
205 false /* has_next */, | 209 false /* has_next */, |
206 base::File::FILE_OK)); | 210 base::File::FILE_OK)); |
207 } | 211 } |
208 | 212 |
209 while (current_offset < kFakeFileSize && current_length) { | 213 while (current_offset < kFakeFileSize && current_length) { |
210 buffer->data()[current_offset - offset] = kFakeFileText[current_offset]; | 214 buffer->data()[current_offset - offset] = kFakeFileText[current_offset]; |
211 const bool has_next = | 215 const bool has_next = |
212 (current_offset + 1 < kFakeFileSize) && (current_length - 1); | 216 (current_offset + 1 < kFakeFileSize) && (current_length - 1); |
213 callback.Run(1, has_next, base::File::FILE_OK); | 217 base::MessageLoopProxy::current()->PostTask( |
| 218 FROM_HERE, |
| 219 base::Bind( |
| 220 callback, 1 /* chunk_length */, has_next, base::File::FILE_OK)); |
214 current_offset++; | 221 current_offset++; |
215 current_length--; | 222 current_length--; |
216 } | 223 } |
217 } | 224 } |
218 | 225 |
219 const ProvidedFileSystemInfo& FakeProvidedFileSystem::GetFileSystemInfo() | 226 const ProvidedFileSystemInfo& FakeProvidedFileSystem::GetFileSystemInfo() |
220 const { | 227 const { |
221 return file_system_info_; | 228 return file_system_info_; |
222 } | 229 } |
223 | 230 |
224 RequestManager* FakeProvidedFileSystem::GetRequestManager() { | 231 RequestManager* FakeProvidedFileSystem::GetRequestManager() { |
225 NOTREACHED(); | 232 NOTREACHED(); |
226 return NULL; | 233 return NULL; |
227 } | 234 } |
228 | 235 |
229 ProvidedFileSystemInterface* FakeProvidedFileSystem::Create( | 236 ProvidedFileSystemInterface* FakeProvidedFileSystem::Create( |
230 extensions::EventRouter* event_router, | 237 extensions::EventRouter* event_router, |
231 const ProvidedFileSystemInfo& file_system_info) { | 238 const ProvidedFileSystemInfo& file_system_info) { |
232 return new FakeProvidedFileSystem(file_system_info); | 239 return new FakeProvidedFileSystem(file_system_info); |
233 } | 240 } |
234 | 241 |
235 base::WeakPtr<ProvidedFileSystemInterface> | 242 base::WeakPtr<ProvidedFileSystemInterface> |
236 FakeProvidedFileSystem::GetWeakPtr() { | 243 FakeProvidedFileSystem::GetWeakPtr() { |
237 return weak_ptr_factory_.GetWeakPtr(); | 244 return weak_ptr_factory_.GetWeakPtr(); |
238 } | 245 } |
239 | 246 |
240 } // namespace file_system_provider | 247 } // namespace file_system_provider |
241 } // namespace chromeos | 248 } // namespace chromeos |
OLD | NEW |