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