FileSystemManagerParent.h (3177B)
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */ 3 /* This Source Code Form is subject to the terms of the Mozilla Public 4 * License, v. 2.0. If a copy of the MPL was not distributed with this 5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 6 7 #ifndef DOM_FS_PARENT_FILESYSTEMMANAGERPARENT_H_ 8 #define DOM_FS_PARENT_FILESYSTEMMANAGERPARENT_H_ 9 10 #include "ErrorList.h" 11 #include "mozilla/dom/FlippedOnce.h" 12 #include "mozilla/dom/PFileSystemManagerParent.h" 13 #include "mozilla/dom/quota/ConditionalCompilation.h" 14 #include "nsISupports.h" 15 16 namespace mozilla::dom { 17 18 namespace fs::data { 19 class FileSystemDataManager; 20 } // namespace fs::data 21 22 class FileSystemManagerParent : public PFileSystemManagerParent { 23 public: 24 FileSystemManagerParent(RefPtr<fs::data::FileSystemDataManager> aDataManager, 25 const EntryId& aRootEntry); 26 27 NS_INLINE_DECL_THREADSAFE_REFCOUNTING(FileSystemManagerParent, override) 28 29 void AssertIsOnIOTarget() const; 30 31 bool IsAlive() const; 32 33 // Safe to call while the actor is live. 34 const RefPtr<fs::data::FileSystemDataManager>& DataManagerStrongRef() const; 35 36 void SetRegistered(bool aRegistered) { mRegistered = aRegistered; } 37 38 mozilla::ipc::IPCResult RecvGetRootHandle(GetRootHandleResolver&& aResolver); 39 40 mozilla::ipc::IPCResult RecvGetDirectoryHandle( 41 FileSystemGetHandleRequest&& aRequest, 42 GetDirectoryHandleResolver&& aResolver); 43 44 mozilla::ipc::IPCResult RecvGetFileHandle( 45 FileSystemGetHandleRequest&& aRequest, GetFileHandleResolver&& aResolver); 46 47 mozilla::ipc::IPCResult RecvGetAccessHandle( 48 FileSystemGetAccessHandleRequest&& aRequest, 49 GetAccessHandleResolver&& aResolver); 50 51 mozilla::ipc::IPCResult RecvGetWritable( 52 FileSystemGetWritableRequest&& aRequest, GetWritableResolver&& aResolver); 53 54 mozilla::ipc::IPCResult RecvGetFile(FileSystemGetFileRequest&& aRequest, 55 GetFileResolver&& aResolver); 56 57 mozilla::ipc::IPCResult RecvResolve(FileSystemResolveRequest&& aRequest, 58 ResolveResolver&& aResolver); 59 60 mozilla::ipc::IPCResult RecvGetEntries(FileSystemGetEntriesRequest&& aRequest, 61 GetEntriesResolver&& aResolver); 62 63 mozilla::ipc::IPCResult RecvRemoveEntry( 64 FileSystemRemoveEntryRequest&& aRequest, RemoveEntryResolver&& aResolver); 65 66 mozilla::ipc::IPCResult RecvMoveEntry(FileSystemMoveEntryRequest&& aRequest, 67 MoveEntryResolver&& aResolver); 68 69 mozilla::ipc::IPCResult RecvRenameEntry( 70 FileSystemRenameEntryRequest&& aRequest, MoveEntryResolver&& aResolver); 71 72 void RequestAllowToClose(); 73 74 void ActorDestroy(ActorDestroyReason aWhy) override; 75 76 protected: 77 virtual ~FileSystemManagerParent(); 78 79 private: 80 RefPtr<fs::data::FileSystemDataManager> mDataManager; 81 82 FileSystemGetHandleResponse mRootResponse; 83 84 FlippedOnce<false> mRequestedAllowToClose; 85 86 bool mRegistered = false; 87 88 DEBUGONLY(bool mActorDestroyed = false); 89 }; 90 91 } // namespace mozilla::dom 92 93 #endif // DOM_FS_PARENT_FILESYSTEMMANAGERPARENT_H_