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
3 // found in the LICENSE file.
5 #include "chrome/browser/local_discovery/storage/privet_filesystem_backend.h"
9 #include "chrome/browser/local_discovery/storage/privet_filesystem_async_util.h"
10 #include "chrome/browser/local_discovery/storage/privet_filesystem_constants.h"
11 #include "webkit/browser/fileapi/file_system_operation.h"
12 #include "webkit/browser/fileapi/file_system_url.h"
14 namespace local_discovery {
16 PrivetFileSystemBackend::PrivetFileSystemBackend(
17 fileapi::ExternalMountPoints* mount_points,
18 content::BrowserContext* browser_context)
19 : mount_points_(mount_points),
20 async_util_(new PrivetFileSystemAsyncUtil(browser_context)) {
23 PrivetFileSystemBackend::~PrivetFileSystemBackend() {
26 bool PrivetFileSystemBackend::CanHandleType(
27 fileapi::FileSystemType type) const {
28 return (type == fileapi::kFileSystemTypeCloudDevice);
31 void PrivetFileSystemBackend::Initialize(fileapi::FileSystemContext* context) {
32 mount_points_->RegisterFileSystem(
34 fileapi::kFileSystemTypeCloudDevice,
35 fileapi::FileSystemMountOption(),
36 base::FilePath(kPrivetFilePath));
39 void PrivetFileSystemBackend::ResolveURL(
40 const fileapi::FileSystemURL& url,
41 fileapi::OpenFileSystemMode mode,
42 const OpenFileSystemCallback& callback) {
43 // TODO(noamsml): Provide a proper root url and a proper name.
45 fileapi::GetExternalFileSystemRootURIString(url.origin(), std::string()));
46 callback.Run(root_url, std::string(), base::File::FILE_OK);
49 fileapi::FileSystemQuotaUtil* PrivetFileSystemBackend::GetQuotaUtil() {
54 fileapi::AsyncFileUtil* PrivetFileSystemBackend::GetAsyncFileUtil(
55 fileapi::FileSystemType type) {
56 return async_util_.get();
59 fileapi::CopyOrMoveFileValidatorFactory*
60 PrivetFileSystemBackend::GetCopyOrMoveFileValidatorFactory(
61 fileapi::FileSystemType type, base::File::Error* error_code) {
63 *error_code = base::File::FILE_OK;
67 fileapi::FileSystemOperation*
68 PrivetFileSystemBackend::CreateFileSystemOperation(
69 const fileapi::FileSystemURL& url,
70 fileapi::FileSystemContext* context,
71 base::File::Error* error_code) const {
72 return fileapi::FileSystemOperation::Create(
74 make_scoped_ptr(new fileapi::FileSystemOperationContext(context)));
77 bool PrivetFileSystemBackend::SupportsStreaming(
78 const fileapi::FileSystemURL& url) const {
82 scoped_ptr<webkit_blob::FileStreamReader>
83 PrivetFileSystemBackend::CreateFileStreamReader(
84 const fileapi::FileSystemURL& url,
86 const base::Time& expected_modification_time,
87 fileapi::FileSystemContext* context) const {
88 return scoped_ptr<webkit_blob::FileStreamReader>();
91 scoped_ptr<fileapi::FileStreamWriter>
92 PrivetFileSystemBackend::CreateFileStreamWriter(
93 const fileapi::FileSystemURL& url,
95 fileapi::FileSystemContext* context) const {
96 return scoped_ptr<fileapi::FileStreamWriter>();
99 } // namespace local_discovery