Coverage Report

Created: 2018-09-25 14:53

/src/mozilla-central/dom/quota/QuotaRequests.h
Line
Count
Source (jump to first uncovered line)
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
0
  { }
42
#endif
43
44
  void
45
  SetError(nsresult aRv);
46
47
  NS_DECL_CYCLE_COLLECTING_ISUPPORTS
48
  NS_DECL_NSIQUOTAREQUESTBASE
49
  NS_DECL_CYCLE_COLLECTION_CLASS(RequestBase)
50
51
protected:
52
  RequestBase();
53
54
  RequestBase(nsIPrincipal* aPrincipal);
55
56
  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
  ClearBackgroundActor()
88
0
  {
89
0
    AssertIsOnOwningThread();
90
0
91
0
    mBackgroundActor = nullptr;
92
0
  }
93
94
  void
95
  SetResult(nsIVariant* aResult);
96
97
  NS_DECL_ISUPPORTS_INHERITED
98
  NS_FORWARD_NSIQUOTAREQUESTBASE(RequestBase::)
99
  NS_DECL_NSIQUOTAUSAGEREQUEST
100
  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
  NS_FORWARD_NSIQUOTAREQUESTBASE(RequestBase::)
127
  NS_DECL_NSIQUOTAREQUEST
128
  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