1 // Copyright 2016 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 CHROME_BROWSER_CHROMEOS_ARC_FILEAPI_ARC_DOCUMENTS_PROVIDER_BACKEND_DELEGATE_H_
6 #define CHROME_BROWSER_CHROMEOS_ARC_FILEAPI_ARC_DOCUMENTS_PROVIDER_BACKEND_DELEGATE_H_
7 
8 #include <memory>
9 
10 #include "base/macros.h"
11 #include "chrome/browser/chromeos/arc/fileapi/arc_documents_provider_async_file_util.h"
12 #include "chrome/browser/chromeos/arc/fileapi/arc_documents_provider_root_map.h"
13 #include "chrome/browser/chromeos/arc/fileapi/arc_documents_provider_watcher_manager.h"
14 #include "chrome/browser/chromeos/fileapi/file_system_backend_delegate.h"
15 
16 namespace arc {
17 
18 // Implements ARC documents provider filesystem.
19 class ArcDocumentsProviderBackendDelegate
20     : public chromeos::FileSystemBackendDelegate {
21  public:
22   ArcDocumentsProviderBackendDelegate();
23   ~ArcDocumentsProviderBackendDelegate() override;
24 
25   // FileSystemBackend::Delegate overrides.
26   storage::AsyncFileUtil* GetAsyncFileUtil(
27       storage::FileSystemType type) override;
28   std::unique_ptr<storage::FileStreamReader> CreateFileStreamReader(
29       const storage::FileSystemURL& url,
30       int64_t offset,
31       int64_t max_bytes_to_read,
32       const base::Time& expected_modification_time,
33       storage::FileSystemContext* context) override;
34   std::unique_ptr<storage::FileStreamWriter> CreateFileStreamWriter(
35       const storage::FileSystemURL& url,
36       int64_t offset,
37       storage::FileSystemContext* context) override;
38   storage::WatcherManager* GetWatcherManager(
39       storage::FileSystemType type) override;
40   void GetRedirectURLForContents(const storage::FileSystemURL& url,
41                                  storage::URLCallback callback) override;
42 
43  private:
44   ArcDocumentsProviderAsyncFileUtil async_file_util_;
45   ArcDocumentsProviderWatcherManager watcher_manager_;
46 
47   DISALLOW_COPY_AND_ASSIGN(ArcDocumentsProviderBackendDelegate);
48 };
49 
50 }  // namespace arc
51 
52 #endif  // CHROME_BROWSER_CHROMEOS_ARC_FILEAPI_ARC_DOCUMENTS_PROVIDER_BACKEND_DELEGATE_H_
53