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 file, 5 * You can obtain one at http://mozilla.org/MPL/2.0/. */ 6 7 #ifndef DOM_LOCKS_LOCKMANAGERPARENT_H_ 8 #define DOM_LOCKS_LOCKMANAGERPARENT_H_ 9 10 #include "mozilla/AlreadyAddRefed.h" 11 #include "mozilla/dom/locks/PLockManagerParent.h" 12 #include "mozilla/dom/locks/LockRequestParent.h" 13 #include "mozilla/ipc/PBackgroundSharedTypes.h" 14 #include "mozilla/WeakPtr.h" 15 16 namespace mozilla::dom::locks { 17 18 class ManagedLocks : public SupportsWeakPtr { 19 public: 20 NS_INLINE_DECL_REFCOUNTING(ManagedLocks) 21 22 nsTArray<RefPtr<LockRequestParent>> mHeldLocks; 23 nsTHashMap<nsStringHashKey, nsTArray<RefPtr<LockRequestParent>>> mQueueMap; 24 25 private: 26 ~ManagedLocks() = default; 27 }; 28 29 class LockManagerParent final : public PLockManagerParent { 30 using IPCResult = mozilla::ipc::IPCResult; 31 32 public: 33 NS_INLINE_DECL_REFCOUNTING(LockManagerParent) 34 35 LockManagerParent(const mozilla::ipc::ContentPrincipalInfo& aPrincipalInfo, 36 const nsID& aClientId); 37 38 void ProcessRequestQueue(nsTArray<RefPtr<LockRequestParent>>& aQueue); 39 bool IsGrantableRequest(const IPCLockRequest& aRequest); 40 41 IPCResult RecvQuery(QueryResolver&& aResolver); 42 43 already_AddRefed<PLockRequestParent> AllocPLockRequestParent( 44 const IPCLockRequest& aRequest); 45 IPCResult RecvPLockRequestConstructor(PLockRequestParent* aActor, 46 const IPCLockRequest& aRequest) final; 47 Locks()48 ManagedLocks& Locks() { return *mManagedLocks; } 49 50 private: 51 ~LockManagerParent() = default; 52 53 void ActorDestroy(ActorDestroyReason aWhy) final; 54 55 RefPtr<ManagedLocks> mManagedLocks; 56 nsString mClientId; 57 mozilla::ipc::ContentPrincipalInfo mPrincipalInfo; 58 }; 59 60 } // namespace mozilla::dom::locks 61 62 #endif // DOM_LOCKS_LOCKMANAGERPARENT_H_ 63