MLSGroupView.h (3073B)
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 mozilla_dom_MLSGroup_h 8 #define mozilla_dom_MLSGroup_h 9 10 #include "mozilla/DOMEventTargetHelper.h" 11 #include "mozilla/dom/MLS.h" 12 #include "mozilla/dom/Promise.h" 13 14 class nsIGlobalObject; 15 16 namespace mozilla::dom { 17 18 class MLSGroupView final : public nsISupports, public nsWrapperCache { 19 public: 20 NS_DECL_CYCLE_COLLECTING_ISUPPORTS 21 NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(MLSGroupView) 22 23 explicit MLSGroupView(MLS* aMLS, nsTArray<uint8_t>&& aGroupId, 24 nsTArray<uint8_t>&& aClientId); 25 26 nsISupports* GetParentObject() const { return mMLS; } 27 28 JSObject* WrapObject(JSContext* aCx, 29 JS::Handle<JSObject*> aGivenProto) override; 30 31 void GetGroupId(JSContext* aCx, JS::MutableHandle<JSObject*> aGroupId, 32 ErrorResult& aRv); 33 void GetClientId(JSContext* aCx, JS::MutableHandle<JSObject*> aClientId, 34 ErrorResult& aRv); 35 36 already_AddRefed<mozilla::dom::Promise> DeleteState(ErrorResult& aRv); 37 38 already_AddRefed<mozilla::dom::Promise> Add( 39 const MLSBytesOrUint8Array& aJsKeyPackage, ErrorResult& aRv); 40 41 already_AddRefed<mozilla::dom::Promise> ProposeAdd( 42 const MLSBytesOrUint8Array& aJsKeyPackage, ErrorResult& aRv); 43 44 already_AddRefed<mozilla::dom::Promise> Remove( 45 const MLSBytesOrUint8Array& aJsRemClientIdentifier, ErrorResult& aRv); 46 47 already_AddRefed<mozilla::dom::Promise> ProposeRemove( 48 const MLSBytesOrUint8Array& aJsRemClientIdentifier, ErrorResult& aRv); 49 50 already_AddRefed<mozilla::dom::Promise> Close(ErrorResult& aRv); 51 52 already_AddRefed<mozilla::dom::Promise> Details(ErrorResult& aRv); 53 54 already_AddRefed<mozilla::dom::Promise> Send( 55 const MLSBytesOrUint8ArrayOrUTF8String& aJsMessage, ErrorResult& aRv); 56 57 already_AddRefed<mozilla::dom::Promise> Receive( 58 const MLSBytesOrUint8Array& aJsMessage, ErrorResult& aRv); 59 60 already_AddRefed<mozilla::dom::Promise> HasPendingProposals(ErrorResult& aRv); 61 62 already_AddRefed<mozilla::dom::Promise> ClearPendingProposals( 63 ErrorResult& aRv); 64 65 already_AddRefed<mozilla::dom::Promise> HasPendingCommit(ErrorResult& aRv); 66 67 already_AddRefed<mozilla::dom::Promise> ClearPendingCommit(ErrorResult& aRv); 68 69 already_AddRefed<mozilla::dom::Promise> ApplyPendingCommit(ErrorResult& aRv); 70 71 already_AddRefed<mozilla::dom::Promise> ExportSecret( 72 const MLSBytesOrUint8ArrayOrUTF8String& aJsLabel, 73 const MLSBytesOrUint8Array& aJsContext, const uint64_t aLen, 74 ErrorResult& aRv); 75 76 private: 77 virtual ~MLSGroupView() { mozilla::DropJSObjects(this); } 78 79 RefPtr<MLS> mMLS; 80 nsTArray<uint8_t> mGroupId; 81 nsTArray<uint8_t> mClientId; 82 JS::Heap<JSObject*> mJsGroupId; 83 JS::Heap<JSObject*> mJsClientId; 84 }; 85 86 } // namespace mozilla::dom 87 88 #endif