From 26a029d407be480d791972afb5975cf62c9360a6 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 02:47:55 +0200 Subject: Adding upstream version 124.0.1. Signed-off-by: Daniel Baumann --- dom/locks/LockManagerParent.h | 61 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 dom/locks/LockManagerParent.h (limited to 'dom/locks/LockManagerParent.h') diff --git a/dom/locks/LockManagerParent.h b/dom/locks/LockManagerParent.h new file mode 100644 index 0000000000..0e0f4affb2 --- /dev/null +++ b/dom/locks/LockManagerParent.h @@ -0,0 +1,61 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef DOM_LOCKS_LOCKMANAGERPARENT_H_ +#define DOM_LOCKS_LOCKMANAGERPARENT_H_ + +#include "mozilla/AlreadyAddRefed.h" +#include "mozilla/dom/locks/PLockManagerParent.h" +#include "mozilla/dom/locks/LockRequestParent.h" +#include "mozilla/ipc/PBackgroundSharedTypes.h" +#include "mozilla/WeakPtr.h" + +namespace mozilla::dom::locks { + +class ManagedLocks : public SupportsWeakPtr { + public: + NS_INLINE_DECL_REFCOUNTING(ManagedLocks) + + nsTArray> mHeldLocks; + nsTHashMap>> mQueueMap; + + private: + ~ManagedLocks() = default; +}; + +class LockManagerParent final : public PLockManagerParent { + using IPCResult = mozilla::ipc::IPCResult; + + public: + NS_INLINE_DECL_REFCOUNTING(LockManagerParent) + + LockManagerParent(NotNull aPrincipal, const nsID& aClientId); + + void ProcessRequestQueue(nsTArray>& aQueue); + bool IsGrantableRequest(const IPCLockRequest& aRequest); + + IPCResult RecvQuery(QueryResolver&& aResolver); + + already_AddRefed AllocPLockRequestParent( + const IPCLockRequest& aRequest); + IPCResult RecvPLockRequestConstructor(PLockRequestParent* aActor, + const IPCLockRequest& aRequest) final; + + ManagedLocks& Locks() { return *mManagedLocks; } + + private: + ~LockManagerParent() = default; + + void ActorDestroy(ActorDestroyReason aWhy) final; + + RefPtr mManagedLocks; + nsString mClientId; + NotNull> mPrincipal; +}; + +} // namespace mozilla::dom::locks + +#endif // DOM_LOCKS_LOCKMANAGERPARENT_H_ -- cgit v1.2.3