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

Side by Side Diff: chrome/browser/chromeos/arc/fileapi/arc_file_system_operation_runner_util.h

Issue 2736603002: mediaview: Support watchers in ArcFileSystemOperationRunner. (Closed)
Patch Set: Created 3 years, 9 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
1 // Copyright 2016 The Chromium Authors. All rights reserved. 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 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 CHROME_BROWSER_CHROMEOS_ARC_FILEAPI_ARC_FILE_SYSTEM_OPERATION_RUNNER_UTI L_H_ 5 #ifndef CHROME_BROWSER_CHROMEOS_ARC_FILEAPI_ARC_FILE_SYSTEM_OPERATION_RUNNER_UTI L_H_
6 #define CHROME_BROWSER_CHROMEOS_ARC_FILEAPI_ARC_FILE_SYSTEM_OPERATION_RUNNER_UTI L_H_ 6 #define CHROME_BROWSER_CHROMEOS_ARC_FILEAPI_ARC_FILE_SYSTEM_OPERATION_RUNNER_UTI L_H_
7 7
8 #include <string> 8 #include <string>
9 9
10 #include "components/arc/common/file_system.mojom.h" 10 #include "base/memory/ref_counted.h"
11 #include "chrome/browser/chromeos/arc/fileapi/arc_file_system_operation_runner.h "
11 12
12 class GURL; 13 class GURL;
13 14
14 namespace arc { 15 namespace arc {
16
15 namespace file_system_operation_runner_util { 17 namespace file_system_operation_runner_util {
16 18
17 using GetFileSizeCallback = mojom::FileSystemInstance::GetFileSizeCallback; 19 using GetFileSizeCallback = ArcFileSystemOperationRunner::GetFileSizeCallback;
18 using OpenFileToReadCallback = 20 using OpenFileToReadCallback =
19 mojom::FileSystemInstance::OpenFileToReadCallback; 21 ArcFileSystemOperationRunner::OpenFileToReadCallback;
20 using GetDocumentCallback = mojom::FileSystemInstance::GetDocumentCallback; 22 using GetDocumentCallback = ArcFileSystemOperationRunner::GetDocumentCallback;
21 using GetChildDocumentsCallback = 23 using GetChildDocumentsCallback =
22 mojom::FileSystemInstance::GetChildDocumentsCallback; 24 ArcFileSystemOperationRunner::GetChildDocumentsCallback;
25 using AddWatcherCallback = ArcFileSystemOperationRunner::AddWatcherCallback;
26 using RemoveWatcherCallback =
27 ArcFileSystemOperationRunner::RemoveWatcherCallback;
28 using WatcherCallback = ArcFileSystemOperationRunner::WatcherCallback;
29
30 // Wraps an ArcFileSystemOperationRunner::Observer so it is called on the IO
31 // thread.
32 class ObserverIOThreadWrapper
33 : public base::RefCountedThreadSafe<ObserverIOThreadWrapper>,
34 public ArcFileSystemOperationRunner::Observer {
35 public:
36 explicit ObserverIOThreadWrapper(
37 ArcFileSystemOperationRunner::Observer* underlying_observer);
38
39 // Disables the observer. After calling this function, the underlying observer
40 // will never be called.
41 // This function should be called on the IO thread.
42 void Disable();
43
44 // ArcFileSystemOperationRunner::Observer overrides:
45 void OnWatchersCleared() override;
46
47 private:
48 friend class base::RefCountedThreadSafe<ObserverIOThreadWrapper>;
49
50 ~ObserverIOThreadWrapper() override;
51
52 void OnWatchersClearedOnIOThread();
53
54 ArcFileSystemOperationRunner::Observer* const underlying_observer_;
55
56 // If set to true, |observer_| will not be called. This variable should be
57 // accessed only on the IO thread.
58 bool disabled_ = false;
59
60 DISALLOW_COPY_AND_ASSIGN(ObserverIOThreadWrapper);
61 };
23 62
24 // Utility functions to post a task to run ArcFileSystemOperationRunner methods. 63 // Utility functions to post a task to run ArcFileSystemOperationRunner methods.
25 // These functions must be called on the IO thread. 64 // These functions must be called on the IO thread. Callbacks and observers will
65 // be called on the IO thread.
26 void GetFileSizeOnIOThread(const GURL& url, 66 void GetFileSizeOnIOThread(const GURL& url,
27 const GetFileSizeCallback& callback); 67 const GetFileSizeCallback& callback);
28 void OpenFileToReadOnIOThread(const GURL& url, 68 void OpenFileToReadOnIOThread(const GURL& url,
29 const OpenFileToReadCallback& callback); 69 const OpenFileToReadCallback& callback);
30 void GetDocumentOnIOThread(const std::string& authority, 70 void GetDocumentOnIOThread(const std::string& authority,
31 const std::string& document_id, 71 const std::string& document_id,
32 const GetDocumentCallback& callback); 72 const GetDocumentCallback& callback);
33 void GetChildDocumentsOnIOThread(const std::string& authority, 73 void GetChildDocumentsOnIOThread(const std::string& authority,
34 const std::string& parent_document_id, 74 const std::string& parent_document_id,
35 const GetChildDocumentsCallback& callback); 75 const GetChildDocumentsCallback& callback);
76 void AddWatcherOnIOThread(const std::string& authority,
77 const std::string& document_id,
78 const WatcherCallback& watcher_callback,
79 const AddWatcherCallback& callback);
80 void RemoveWatcherOnIOThread(int64_t watcher_id,
81 const RemoveWatcherCallback& callback);
82 void AddObserverOnIOThread(scoped_refptr<ObserverIOThreadWrapper> observer);
83 void RemoveObserverOnIOThread(scoped_refptr<ObserverIOThreadWrapper> observer);
36 84
37 } // namespace file_system_operation_runner_util 85 } // namespace file_system_operation_runner_util
38 } // namespace arc 86 } // namespace arc
39 87
40 #endif // CHROME_BROWSER_CHROMEOS_ARC_FILEAPI_ARC_FILE_SYSTEM_OPERATION_RUNNER_ UTIL_H_ 88 #endif // CHROME_BROWSER_CHROMEOS_ARC_FILEAPI_ARC_FILE_SYSTEM_OPERATION_RUNNER_ UTIL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698