/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim:set ts=2 sw=2 sts=2 et cindent: */ /* 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 mozilla_dom_MLSTransactionParent_h #define mozilla_dom_MLSTransactionParent_h #include "mozilla/dom/PMLSTransaction.h" #include "mozilla/dom/PMLSTransactionParent.h" #include "nsIPrincipal.h" namespace mozilla::dom { class MLSTransactionParent final : public PMLSTransactionParent { public: NS_INLINE_DECL_THREADSAFE_REFCOUNTING(MLSTransactionParent, override); explicit MLSTransactionParent(const nsACString& aDatabasePath) : mDatabasePath(aDatabasePath) {}; static nsresult CreateDirectoryIfNotExists(nsIFile* aDir); static nsresult ConstructDatabasePrefixPath(nsCOMPtr& aFile); static nsresult ConstructDatabaseFullPath(nsCOMPtr& aFile, nsIPrincipal* aPrincipal, nsCString& aDatabasePath); void ActorDestroy(ActorDestroyReason) override; mozilla::ipc::IPCResult RecvRequestStateDelete( RequestStateDeleteResolver&& aResolver); mozilla::ipc::IPCResult RecvRequestGroupStateDelete( const nsTArray& aGroupIdentifier, const nsTArray& aIdentifier, RequestGroupStateDeleteResolver&& aResolver); mozilla::ipc::IPCResult RecvRequestGenerateIdentityKeypair( RequestGenerateIdentityKeypairResolver&& aResolver); mozilla::ipc::IPCResult RecvRequestGenerateCredentialBasic( const nsTArray& aCredContent, RequestGenerateCredentialBasicResolver&& aResolver); mozilla::ipc::IPCResult RecvRequestGenerateKeyPackage( const nsTArray& aIdentifier, const nsTArray& aCredential, RequestGenerateKeyPackageResolver&& aResolver); mozilla::ipc::IPCResult RecvRequestGroupCreate( const nsTArray& aIdentifier, const nsTArray& aCredential, const nsTArray& aInOptGroupIdentifier, RequestGroupCreateResolver&& aResolver); mozilla::ipc::IPCResult RecvRequestGroupJoin( const nsTArray& aIdentifier, const nsTArray& aWelcome, RequestGroupJoinResolver&& aResolver); mozilla::ipc::IPCResult RecvRequestGroupAdd( const nsTArray& aGroupIdentifier, const nsTArray& aIdentifier, const nsTArray& aKeyPackage, RequestGroupAddResolver&& aResolver); mozilla::ipc::IPCResult RecvRequestGroupProposeAdd( const nsTArray& aGroupIdentifier, const nsTArray& aIdentifier, const nsTArray& aKeyPackage, RequestGroupProposeAddResolver&& aResolver); mozilla::ipc::IPCResult RecvRequestGroupRemove( const nsTArray& aGroupIdentifier, const nsTArray& aIdentifier, const nsTArray& aRemIdentifier, RequestGroupRemoveResolver&& aResolver); mozilla::ipc::IPCResult RecvRequestGroupProposeRemove( const nsTArray& aGroupIdentifier, const nsTArray& aIdentifier, const nsTArray& aRemIdentifier, RequestGroupProposeRemoveResolver&& aResolver); mozilla::ipc::IPCResult RecvRequestGroupClose( const nsTArray& aGroupIdentifier, const nsTArray& aIdentifier, RequestGroupCloseResolver&& aResolver); mozilla::ipc::IPCResult RecvRequestGroupDetails( const nsTArray& aGroupIdentifier, const nsTArray& aIdentifier, RequestGroupDetailsResolver&& aResolver); mozilla::ipc::IPCResult RecvRequestSend( const nsTArray& aGroupIdentifier, const nsTArray& aIdentifier, const nsTArray& aMessage, RequestSendResolver&& aResolver); mozilla::ipc::IPCResult RecvRequestReceive( const nsTArray& aClientIdentifier, const nsTArray& aMessage, RequestReceiveResolver&& aResolver); mozilla::ipc::IPCResult RecvRequestHasPendingProposals( const nsTArray& aGroupIdentifier, const nsTArray& aClientIdentifier, RequestHasPendingProposalsResolver&& aResolver); mozilla::ipc::IPCResult RecvRequestClearPendingProposals( const nsTArray& aGroupIdentifier, const nsTArray& aClientIdentifier, RequestClearPendingProposalsResolver&& aResolver); mozilla::ipc::IPCResult RecvRequestHasPendingCommit( const nsTArray& aGroupIdentifier, const nsTArray& aClientIdentifier, RequestHasPendingCommitResolver&& aResolver); mozilla::ipc::IPCResult RecvRequestClearPendingCommit( const nsTArray& aGroupIdentifier, const nsTArray& aClientIdentifier, RequestClearPendingCommitResolver&& aResolver); mozilla::ipc::IPCResult RecvRequestApplyPendingCommit( const nsTArray& aGroupIdentifier, const nsTArray& aClientIdentifier, RequestApplyPendingCommitResolver&& aResolver); mozilla::ipc::IPCResult RecvRequestExportSecret( const nsTArray& aGroupIdentifier, const nsTArray& aIdentifier, const nsTArray& aLabel, const nsTArray& aContext, uint64_t aLen, RequestExportSecretResolver&& aResolver); mozilla::ipc::IPCResult RecvRequestGetGroupIdentifier( const nsTArray& aMessage, RequestGetGroupIdentifierResolver&& aResolver); mozilla::ipc::IPCResult RecvRequestGetGroupEpoch( const nsTArray& aMessage, RequestGetGroupEpochResolver&& aResolver); protected: ~MLSTransactionParent() = default; nsCString mDatabasePath; }; } // namespace mozilla::dom #endif