QuotaRequests.h (2724B)
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_quota_UsageRequest_h 8 #define mozilla_dom_quota_UsageRequest_h 9 10 #include "ErrorList.h" 11 #include "nsCOMPtr.h" 12 #include "nsCycleCollectionParticipant.h" 13 #include "nsIPrincipal.h" 14 #include "nsIQuotaRequests.h" 15 #include "nsISupports.h" 16 17 class nsIQuotaCallback; 18 class nsIQuotaUsageCallback; 19 class nsIVariant; 20 21 namespace mozilla::dom::quota { 22 23 class QuotaUsageRequestChild; 24 25 class RequestBase : public nsIQuotaRequestBase { 26 protected: 27 nsCOMPtr<nsIPrincipal> mPrincipal; 28 29 nsresult mResultCode; 30 bool mHaveResultOrErrorCode; 31 32 public: 33 void AssertIsOnOwningThread() const 34 #ifdef DEBUG 35 ; 36 #else 37 { 38 } 39 #endif 40 41 void SetError(nsresult aRv); 42 43 NS_DECL_CYCLE_COLLECTING_ISUPPORTS 44 NS_DECL_NSIQUOTAREQUESTBASE 45 NS_DECL_CYCLE_COLLECTION_CLASS(RequestBase) 46 47 protected: 48 RequestBase(); 49 50 RequestBase(nsIPrincipal* aPrincipal); 51 52 virtual ~RequestBase() { AssertIsOnOwningThread(); } 53 54 virtual void FireCallback() = 0; 55 }; 56 57 class UsageRequest final : public RequestBase, public nsIQuotaUsageRequest { 58 nsCOMPtr<nsIQuotaUsageCallback> mCallback; 59 60 nsCOMPtr<nsIVariant> mResult; 61 62 QuotaUsageRequestChild* mBackgroundActor; 63 64 bool mCanceled; 65 66 public: 67 explicit UsageRequest(nsIQuotaUsageCallback* aCallback); 68 69 UsageRequest(nsIPrincipal* aPrincipal, nsIQuotaUsageCallback* aCallback); 70 71 void SetBackgroundActor(QuotaUsageRequestChild* aBackgroundActor); 72 73 void ClearBackgroundActor() { 74 AssertIsOnOwningThread(); 75 76 mBackgroundActor = nullptr; 77 } 78 79 void SetResult(nsIVariant* aResult); 80 81 NS_DECL_ISUPPORTS_INHERITED 82 NS_FORWARD_NSIQUOTAREQUESTBASE(RequestBase::) 83 NS_DECL_NSIQUOTAUSAGEREQUEST 84 NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(UsageRequest, RequestBase) 85 86 private: 87 ~UsageRequest(); 88 89 virtual void FireCallback() override; 90 }; 91 92 class Request final : public RequestBase, public nsIQuotaRequest { 93 nsCOMPtr<nsIQuotaCallback> mCallback; 94 95 nsCOMPtr<nsIVariant> mResult; 96 97 public: 98 Request(); 99 100 explicit Request(nsIPrincipal* aPrincipal); 101 102 explicit Request(nsIQuotaCallback* aCallback); 103 104 void SetResult(nsIVariant* aResult); 105 106 NS_DECL_ISUPPORTS_INHERITED 107 NS_FORWARD_NSIQUOTAREQUESTBASE(RequestBase::) 108 NS_DECL_NSIQUOTAREQUEST 109 NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(Request, RequestBase) 110 111 private: 112 ~Request(); 113 114 virtual void FireCallback() override; 115 }; 116 117 } // namespace mozilla::dom::quota 118 119 #endif // mozilla_dom_quota_UsageRequest_h